Netflix如何在上万台机器中管理微服务?

使用 Eureka 作为服务发现工具

Eureka 是什么?
Eureka 解决的问题

有了 Eureka,Netflix 如何做红黑发布?
EurekaStatusChangeEvent 事件,帮助开发者在这个事件监听器里去做对应的服务下线处理。
Netflix 在实现红黑发布的时候,会先将一部分的服务动态下线,如果这些服务有一些 Batching 任务,则通过事件监听器停掉这些任务。
为什么 Netflix 没有选择使用 ZooKeeper 做服务发现?
Hystrix 做服务降级

2. 支持线程和资源访问的隔离。当服务的并发访问特别大时(每秒上百个连接),Circuit Break 会对线程进行隔离,或者对资源访问做限制,保证服务的可用性。下图是 Circuit Break Open/Close 的决策流程:

2. Circuit-breaker 的状态会从 CLOSED 变成 OPEN(熔断状态)。
3. 当 Circuit-breaker 状态为 OPEN 时,所有进来的请求会被阻止。
4. 过一段时间,会让一些单个的请求进来(Half-Open),如果服务调用仍然失败,Circuit-breaker 会再次进入 OPEN 状态,如果请求成功,Circuit-breaker 状态变为 CLOSED 并且重新进入第一步。目前,Hystrix 正在对跨服务事务(Transaction)处理进行优化中。
Ribbon 作为负载均衡
3. 支持将多种负载均衡的策略同时启用,将负载均衡的效果调试到最好。
4. 自定义设置重试机制。
虽然 Ribbon 项目处于维护状态,但是它的实现思路仍然值得大家借鉴。
总结