集群,微服务
衍生出几个问题
1.什么是微服务
2.它们之间是怎么相互协调工作的
3.分别有什么注册中心
4.区别是什么
一.什么是微服务
微服务是一种用于构建应用的架构方案。之前一整个应用采用的是(单体)巨石的项目结构,功能之间互相引用,一荣俱荣,一损俱损,有时候只修改其中某一个小功能的bug,整个工程都要进行重启
微服务就是,把这个巨石项目进行拆解,然后再通过某种方式互相引用,共同构建组成一个应用,每个功能都可以独立部署,需要时能互相协调,故障时又不会影响其它功能的正常使用,具有很好的伸展性和扩张性
二.它们之间是怎么相互协调工作的
那这些微服务是怎么协调工作的呢?
同学A:那还不简单,http啊 post,get,websockt,webservice 等等等等
同学A回答的确实不错,这些方式都可以进行协调工作,但是有一个问题,这种做法是需要我们自己明确对应的URL,如果服务器模块有扩张,迁移等情况,那会出现很多问题,集群模式下,你完全不知有多少模块有引用到这个迁移模块
- 目标服务肯定会做扩容,扩容以后,客户端会带来一些变化
- 客户端对于目标服务如何进行负载均衡
- 客户端如何维护目标服务的地址信息
- 服务端的服务状态变化,如何让客户端进行感知
那这个时候有个叫注册中心的人跑出来说:"我来".
然后经过一系列的约定,建立了一个通讯录一样的东西,你call某一串号码,就是打电话给张三,然后张三就给你提供你想要知道的东西,张三就是出差到北京,上海,都与你无关,你一样能联系到他
服务注册中心(下称注册中心)是微服务架构非常重要的一个组件,在微服务架构里主要起到了协调者
的一个作用。注册中心一般包含如下几个功能:
1. 服务发现:
服务注册/反注册:保存服务提供者和服务调用者的信息
服务订阅/取消订阅:服务调用者订阅服务提供者的信息,最好有实时推送的功能
服务路由(可选):具有筛选整合服务提供者的能力。
2. 服务配置:
配置订阅:服务提供者和服务调用者订阅微服务相关的配置
配置下发:主动将配置推送给服务提供者和服务调用者
3. 服务健康检测:
检测服务提供者的健康情况
三.分别有什么注册中心
nacos、eureka、consul、coreDNS、zookeeper 听说redis也可以做注册中心
四.区别是什么
Nacos | Eureka | Consul | CoreDNS | Zookeeper | |
---|---|---|---|---|---|
一致性协议 | CP+AP | AP | CP | — | CP |
健康检查 | TCP/HTTP/MYSQL/Client Beat | Client Beat | TCP/HTTP/gRPC/Cmd | — | Keep Alive |
负载均衡策略 | 权重/metadata/Selector | Ribbon | Fabio | RoundRobin | — |
雪崩保护 | 有 | 有 | 无 | 无 | 无 |
自动注销实例 | 支持 | 支持 | 不支持 | 不支持 | 支持 |
监听支持 | 支持 | 支持 | 支持 | 不支持 | 支持 |
多数据中心 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
跨注册中心同步 | 支持 | 不支持 | 支持 | 不支持 | 不支持 |
SpringCloud集成 | 支持 | 支持 | 支持 | 不支持 | 支持 |
Dubbo集成 | 支持 | 不支持 | 不支持 | 不支持 | 支持 |
K8S集成 | 支持 | 支持 | 支持 | 支持 | 支持 |