微服务架构的核心问题?
1.服务这么多,客户端该怎么访问?
2.这么多服务,客户端如何通信?
3.这么多服务,如何治理?
4.服务挂了怎么办?
解决方案:
SpringCloud 不是技术 是个生态
1.Spring Cloud NetFlix一站式解决方案
- api网关,zuul组件
- Feign — HttpClient—Http通信方式,同步,阻塞
- 服务注册发现:Eureka
- 熔断机制:Hystrix
2.Apache Dubbo zookeeper半自动,需要整合别人
- API:没有,找第三方组件,或者自己实现
- Dubbo
- Zookeeper
- 没有,借助Hystrix
Dubbo这个方案并不完善
3.Spring Cloud Alibaba一站式解决方案,更简单
4.新概念:服务网格~ server Mesh
- istio
万变不离其宗:
1.Api 路由问题
2.Http,RPC 通信问题
3.注册与发现 高可用问题
4.熔断机制 服务降级问题
常见面试题:
1.什么是微服务
是一种架构模式或者架构风格,提倡将单一的应用程序划分成组小的服务,彻底解耦,每个微服务提供单个业务功能,类似于进程的概念,能单独启动,拥有自己独立的数据库
2.微服务之间是如何独立通信的
3.Spring Cloud和Dubbo的区别
Spring Cloud NetFlix一站式解决方案
- api网关,zuul组件
- Feign — HttpClient—Http通信方式,同步,阻塞
- 服务注册发现:Eureka
- 熔断机制:Hystrix
Apache Dubbo zookeeper半自动,需要整合别人
-
API:没有,找第三方组件,或者自己实现
-
Dubbo
-
Zookeeper
-
没有,借助Hystrix
Dubbo这个方案并不完善
最大区别:SpringCloud抛弃了Dubbo的RPC通信,采用基于HTTP的REST方式
4.SpringBoot和SpringCloud谈谈对他们的理解 -
Springboot专注于快速开发单个个体微服务–jar包
-
SpringCloud是关注全局的微服务协调整理治理框架,将Springboot开发的单个微服务整合起来,为各个微服务之间提供:服务注册发现、路由微代理、分布式会话等集成服务
-
Springboot可以离开SpringCloud独立使用开发项目但Spring Cloud离不来Springboot,有依赖关系
-
Springboot专注于快速、方便的开发单个个体微服务,SpringCloud关注全局服务治理框架
5.什么是服务熔断?什么是服务降级
6.微服务的优缺点分别是什么?项目中遇到的坑
- 优点
- 每个服务足够内聚,足够小
- 开发简单,效率高
- 松耦合,无论开发阶段还是部署阶段都独立
- 微服务知识业务逻辑的代码,不会有Css、html 和其他界面混合
- 每个微服务都有自己的存储能力,可以有自己的数据库,也可以有统一的数据库
- 缺点
- 服务间通信成本增加
- 数据的一致性问题
- 运维压力增加
- 开发人员还要处理分布式系统的复杂性
7.微服务技术栈有哪些?
| 微服务条目 | 落地技术 |
|---|---|
| 服务开发 | SpringBoot、Spring、SpringMVC |
| 服务配置与管理 | NetFlix公司的Archaius、阿里的Diamond |
| 服务注册与发现 | Eureka、Consul、Zookeeper |
| 服务调用 | Rest、RPC、gRPC |
| 服务熔断器 | Hystrix、Envoy |
| 负载均衡 | Ribbon、Nginx |
| 服务接口调用 | Feign |
| 消息队列 | Kafka、RabbitMQ、ActiveMQ |
| 服务配置中心管理 | SpringCloudConfig、Chef |
| 服务路由(API网关) | Zuul |
| 服务监控 | Zabbix、Nagios、Metrics、Specatator |
| 全链路追踪 | Zipkin、Brave、Dapper |
| 服务部署 | Docker、OpenStack、Kubernetes |
| 数据流操作开发包) | SpringCloud Stream(封装与redis、rabbit、kafka等发送接收消息) |
| 事件消息总栈 | SpringCloud Bus |
8.eureka和zookeeper都可以提供服务注册与发现的功能,请说出两个的区别
简单网站内部架构图,请问技术都会了吗,会了没用,原理懂了吗?面试能通过否?作为程序媛的我冲鸭~~~~~~~