注册中心选型
一、什么是微服务
微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。
二、微服务的特点
复杂度可控
每一个微服务专注于单一功能
简化部署
在一个单块系统中,只要修改了一行代码,就需要对整个系统进行重新的构建、测试,然后将整个系统进行部署。而微服务则可以对一个微服务进行部署。
灵活组合
在微服务架构中,可以通过组合已有的微服务以达到功能重用的目的。
技术选型灵活
技术选型是去中心化的,在一个大型系统中,不同的功能具有不同的特点,并且不同的团队可能具备不同的技术能力。因为微服务间松耦合,不同的微服务可以选择不同的技术栈进行开发。
容错
故障会被隔离在单个服务中
扩展
每个服务可以根据实际需求独立进行扩展
三、注册中心的选型
| Nacos | Eureka | Consul | Zookeeper |
---|---|---|---|---|
Nacos | Eureka | Consul | Zookeeper | |
一致性协议 | CP+AP | AP | CP | CP |
健康检查 | TCP/HTTP/MYSQL/Client Beat | Client Beat | TCP/HTTP/gRPC/Cmd | Keep Alive |
负载均衡策略/权重 | metadata/Selector | Ribbon | Fabio | — |
雪崩保护 | 有 | 有 | 无 | 无 |
自动注销实例 | 支持 | 支持 | 不支持 | 支持 |
访问协议 | HTTP/DNS | HTTP | HTTP/DNS | TCP |
监听支持 | 支持 | 支持 | 支持 | 支持 |
多数据中心 | 支持 | 支持 | 支持 | 不支持 |
跨注册中心同步 | 支持 | 不支持 | 支持 | 不支持 |
SpringCloud集成 | 支持 | 支持 | 支持 | 不支持 |
Dubbo集成 | 支持 | 不支持 | 不支持 | 支持 |
K8S集成 | 支持 | 不支持 | 支持 | 不支持 |
nacos介绍 //nacos.io/zh-cn/docs/what-is-nacos.html
注意: Eureka 1.X目前停止维护
四、服务与服务之间调用
服务间调用,如果使用cloud的eureka作为注册中心,那么可以使用fegin,否则弃用
feign是声明式的web service客户端,它让微服务之间的调用变得更简单了,通常我们在进行远程调用的时候,如果是通过http,那么我们可以使用spring提供的httptemplate,然后自己组装参数这些,比较麻烦和复杂,而使用fegin时我们可以
只写一个interface,然后就像调用本地方法一下,使用接口方法,由fegin去帮助我们转换和发起http请求。大大简化开发的复杂度。
fegin底层自动集成了eureka(注册中心,强制使用),ribbon(客户端负载均衡,默认就是轮询,可以配置),hystrix(熔断器,可以不用),ribbon和hystrix我们都可以预留,后期如果需要的时候,可以直接启用就行了。(谢金润提供)
参考文献:
- 从 0 开始的微服务架构:重识微服务架构
- 微服务的4个设计原则和19个解决方案
- RESTful API 编写指南``
还没有评论,来说两句吧...