服务发现
服务发现用于动态感知服务提供方地址,并提供服务路由分发策略能力。
1. 客户端发现
客户端从注册中心获取服务列表,客户端监听服务列表的变化,客户端通过路由策略选择合适的服务端地址。
服务端在停服务时,需要先通知客户端不要发送新请求过来,等服务端把当前请求处理完后,才断开连接。
2. 代理端发现
代理端对外提供服务,主要用于对外请求路由。代理端(比如nginx/haproxy)转发请求到后端服务。后端服务暴露地址到注册中心,代理程序动态获取服务地址。
nginx可以试试nginx-upsync-module
在k8s内部,采用nginx+dns+k8s proxy实现。
关于高可用系统
http://coolshell.cn/articles/17459.html
前段时间写了一段公司的公关文(CUI NIU BI),强迫自己写了5个9
。
作者讲了几个大实话:
如果你没有一套科学的牛逼的软件工程的管理,没有牛逼先进的自动化的运维工具,没有技术能力很牛逼的工程师团队,怎么可能出现高可用的系统啊。
深层次的东西则是——对工程这门科学的尊重:1.对待技术的态度 2.一个公司的工程文化 3.领导者对工程的尊重
佛渡有缘人,点到即止,不强求。
- 以前对高可用的关注点主要在应用层面,现在加入运维团队后,高可用的关注点延伸到机房、硬件。
- 同城双活只要网络质量靠谱点,还是比较好做,主要是南北请求路由控制和东西流量故障切换。
- 把服务不可用的因素分成planned、unplanned,分别设计预案
也许把SLA
写到合同里,我就不敢乱吹牛逼了。