糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > 【弹力设计篇】弹力设计总结

【弹力设计篇】弹力设计总结

时间:2020-09-24 09:14:14

相关推荐

【弹力设计篇】弹力设计总结

前面主要聊了多个弹力设计,遮盖力主要做一个汇总

弹力设计总图

集群:服务不能是单点的,所以我们的架构需要冗余设计,设计成集群服务,也就是多个副本机制。需要具体的技术

负载均衡+服务健康检查,使用像Nginx或者HAProxy 等SLB技术。 如果是对外系统的话,那么需要使用SLB进行负载均衡。服务发现+动态路由+服务健康检查,Consul 或Zookeeper。这种方式主要是内部服务的调用,比如订单调用支付,支付有三个服务,应该调用那个服务,那么就需要使用注册中心+RPC的方式进行内部服务调用。自动化运维,因为传统的人工运维是很浪费时间的。所以需要K8s服务调度、伸缩和故障迁移。

服务隔离

为保证服务之间不会出现多米诺骨牌效应,那么应该对服务进行解耦和拆分。

bulkheads模式:业务分片、用户分片、数据库拆分。自包含系统:所以自包含的系统是从单体到微服务的中间状态,把密切相关的微服务拆分出来,做到没有外部依赖。异步通讯:服务发现、事件驱动、消息队列、业务工作流。自动化运维服务调用链和性能监控的监控系统。

容错失败设计

一个分布式系统是不能避免出现失败异常的场景,所以我们需要design for 失败。也就是容错设计。

错误方面:重试、熔断、幂等设计一致性方面:强一致性使用两阶段提交,最终一致性使用异步通讯方式。流控方面:限流+降级技术自动化运维方面:网关流量调度,服务监控。

所以主要就是三块东西,服务冗余、服务解耦、服务容错

对于服务容错来说,有重试势必就要有幂等设计。而限流、降级、排队、熔断是保证系统的稳定性,在可用性和一致性之间作出的妥协。

除了上述这三点,还要考虑自动化运维,要不然人肉运维的话,故障出现的时候不能及时解决。

弹力开发与运维

Kubernetes 不是针对语言的,而是针对容器的,所以,它是以通用的方式为所有语言解决分布式计算问题。

Spring Cloud 有一套丰富且集成良好的 Java 库,作为应用栈的一部分解决所有运行时问题

二者可以互补。

小结

这里贴以下弹力设计的文章,感兴趣的可以看以下。

聊聊故障和高可用架构设计

幂等设计

重试设计

降级设计

熔断设计

限流设计

异步通讯设计

隔离设计

容灾 异地多活设计

如果觉得《【弹力设计篇】弹力设计总结》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。