SpringBoot——》面试题(微服务)
微服务之间是如何独立通讯的?
- 1、远程过程调用(Remote Procedure Invocation)
使用:服务的注册与发现,直接通过远程过程调用来访问别的service。
优点:简单,常见,因为没有中间件代理,系统更简单
缺点: 只支持请求/响应的模式,不支持别的,比如通知、请求/异步响应、发布/订阅、发布/异步响应,降低了可用性,因为客户端和服务端在请求过程中必须都是可用的
- 2、消息
使用:异步消息来做服务间通信。服务间通过消息管道来交换消息,从而通信。
优点:
- 把客户端和服务端解耦,更松耦合
- 提高可用性,因为消息中间件缓存了消息,直到消费者可以消费
- 支持很多通信机制比如通知、请求/异步响应、发布/订阅、发布/异步响应
缺点:消息中间件有额外的复杂
微服务的优缺点?
优点:
- 每一个服务足够
内聚
,代码容易理解 开发效率提高
,一个服务只做一件事- 微服务能够被
小团队单独开发
- 微服务是
松耦合
的 - 易于与第三方
集成
- 可以
灵活搭配
,连接公共库/连接独立库 - 可以用
不同的语言开发
,面向接口编程
缺点:
- 分布式系统的负责性
- 多服务
运维难度
,随着服务的增加,运维的压力也在增大 系统部署依赖
服务间通信成本
数据一致性
系统集成测试
性能监控
微服务的特点?
- 按业务划分为一个独立运行的程序,即服务单元
- 服务之间通过HTTP协议相互通信
- 自动化部署
- 可以用不同的编程语言
- 可以用不同的存储技术
- 服务集中化管理
- 微服务是一个分布式系统
你所知道的微服务技术栈
- 服务开发:springboot、spring、springmvc
- 服务配置与管理:Netfix公司的Archaiusm ,阿里的Diamond
- 服务注册与发现:Eureka、Zookeeper
- 服务调用:Rest、RPC
- 服务熔断器:Hystrix
- 服务负载均衡:Ribbon、Nginx
- 服务接口调用:Fegin
- 消息队列:Kafka、Rabbitmq、activemq
- 服务配置中心管理:SpringCloudConfig
- 服务路由(API网关):Zuul
- 事件消息总线:SpringCloud Bus