1. 什么是服务注册和发现
假如这个产品已经在线上运行,有一天运营想搞一场促销活动,那么我们相对应的【用户服务】可能就要新开启三个微服务实例来支撑这场促销活动。而与此同时,作为苦逼程序员的你就只有手动去 API gateway 中添加新增的这三个微服务实例的 ip 与port ,一个真正在线的微服务系统可能有成百上千微服务,难道也要一个一个去手动添加吗?有没有让系统自动去实现这些操作的方法呢?答案当然是有的。
当我们新添加一个微服务实例的时候,微服务就会将自己的 ip 与 port 发送到注册中心,在注册中心里面记录起来。当 API gateway 需要访问某些微服务的时候,就会去注册中心取到相应的 ip 与 port。从而实现自动化操作。
基于配置文件的微服务弊端
2. 技术选型
Consul 与其他常见服务发现框架对比
| 名称
| 优点
| 缺点
| 接口
| 一致性算法
| | —- | —- | —- | —- | —- | | zookeeper
| 1.功能强大,不仅仅只是服务发现 2.提供 watcher 机制能实时获取服务提供者的状态 3.dubbo 等框架支持
| 1.没有健康检查 2.需在服务中集成 sdk,复杂度高 3.不支持多数据中心
| sdk
| Paxos
| | consul
| 1.简单易用,不需要集成 sdk 2.自带健康检查 3.支持多数据中心 4.提供 web 管理界面
| 1.不能实时获取服务信息的变化通知
| http/dns
| Raft
| | etcd
| 1.简单易用,不需要集成 sdk 2.可配置性强
| 1.没有健康检查 2.需配合第三方工具一起完成服务发现 3.不支持多数据中心
| http
| Raft
|
