分布式精华问答 | 如何实现分布式系统的高可用性?

640?wx_fmt=png

布式的处理方式越来越受到业界的青睐——计算机系统正在经历一场前所未有的从集中式向分布式架构的变革。今天,我们就来看看关于分布式的精华问答吧!


640?wx_fmt=gif1

Q:分布式系统常见的性能问题一般是如何产生的?


A:系统模块的 TPS/OPS (每秒请求/事务数量)开始出现上涨时,系统可能会出现莫名其妙的错误,要么就是大量客户端请求超时,要么就是磁盘 I/O 尤其是写操作时特别高,要么就是数据库出现无数的表锁。原因多种多样,有可能是 Linux 操作系统的若干参数没有优化,有可能是基础设施薄弱,还有可能是数据表设计阶段没有联系业务方进行聚集索引和非聚集索引的调整。调优涉及多个方面:硬件层面、 网络层面、操作系统层面、应用软件层面和代码质量层面。


640?wx_fmt=gif2

Q:如何实现分布式系统的高可用性?


A:高可用性的前提是:保证服务系统能够持续工作,实现高可用性一般有两种手段: 一种是通过第三方软件/组件保证系统的可用性;另一种是软件/组件自身己具备高可用的技术实现。


640?wx_fmt=gif3

Q:在同一顶层设计下,多个子系统间用来调用时经常发生的异常问题,这是怎么回事?


扫描二维码关注公众号,回复: 5487314 查看本文章

A:在分布式业务执行过程中,技术人员需要假设的前提是:调用过程的异常问题无论如何都会出现, 即使是再完美的业务系统也不能避免。系统间调用的异常如果处理不好,那么其造成的损害,特别是对数据一致性的损害将是巨大的。处理这些异常问题,通常需要:

1.使用消息队列的事务机制、重发机制或者私信机制,

2.利用RPC实现的事务补偿机制,

3.使用带有熔断机制的第三方组件,

4.利用日志数据排查和解决系统间调用异常


640?wx_fmt=gif4

Q:分布式系依赖关系如何理解?


A:整个顶层设计下的若干个子系统肯定存在依赖关系,但是依赖关系是否科学、是否可以持久维护是需要考虑的一个非常关键的要点 。 客户方不懂技术,是我们在需求调研阶段遇到的算一个问题的问题,但关键看需求人员从哪个方面着手向用户解释,引导用户对需求逻辑进行分析 。 比起前两个代码级别的循环依赖和业务级别的循环依赖,整个顶层设计下的若干子系统的循环依赖问题才是架构师最头疼的问题。


640?wx_fmt=gif5

Q:由于系统间存在依赖关系,当业务服务系统 A l 变得不可用时,依赖它的另一个系统 B 的服务也会变得不可用,当系统 B 的服务不可用时,依赖系统 B 工作的服务系统 C 也变得不可用 ……,这如何解决?


A:这一类问题,常见的就是开发人员写代码时突然“断片”留下的低级问题。由于单元测试覆盖率的缺失,这类问题又没有很好地在自测和集成测试步骤中被发现,最终被发布到上线环境。要尽可能避免这类问题最好的办法是优化技术团队的版本发布流程、优化自动测试方案,将问题扼杀在线下。


640?wx_fmt=png

小伙伴们冲鸭,后台留言区等着你!

关于分布式,今天你学到了什么?还有哪些不懂的?除此还对哪些话题感兴趣?快来留言区打卡啦!留言方式:打开第XX天,答:……

同时欢迎大家搜集更多问题,投稿给我们!风里雨里留言区里等你~


福利

1、扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!


640?wx_fmt=jpeg

2、公众号后台回复:白皮书,获取IDC最新数据白皮书整理资料!


推荐阅读:


640?wx_fmt=png 喜欢就点击“好看”吧


猜你喜欢

转载自blog.csdn.net/FL63Zv9Zou86950w/article/details/88361119