微服务的4个核心问题
1、服务很多,客户端如何访问。(API)
2、如此多服务,服务器之间如何通信。(http,rpc)
3、如此多服务,如何治理。(注册与发现)
4、服务挂了怎么办。(熔断)
解决方案
1、spring cloud netflix 一站式解决方案(同步,阻塞)
api解决问题1,zuul解决问题2,eureka实现注册于服务,hystrix实现熔断。
2、Apache Dubbo zookeeper 半自动,需要整合别人的框架(异步,非阻塞)
没有api需要整合第三方,Dubbo 解决问题2,zookeeper 实现注册于服务,没有熔断器,需要整合hystrix。
3、spring cloud alibaba (新)一站式解决方案
所需技术
服务开发:springboot spring springmvc
服务配置于管理:Netflix的archains 阿里的diamond
服务注册于发现:eureka zookeeper consul
服务调用:restful风格 rpc gRPC
服务熔断器:hystrix envoy
负载均衡:ribbon nginx
服务接口调用:feign
消息队列:kafka rabbitMQ activeMQ
服务配置中心管理:springcloudConfig chef
服务路由(API网关):zuul
服务监控:zabbix nagios metrix specatator
全链路追踪:zipkim brave dapper
服务部署:docker openstack kubernetes
数据流操作开发包:springcloud stream(封装与Redis,rabbit,kafka等发送接收数据消息)
事件消息总线:springcloud bus