专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

有哪些设计或实现上的难点_java

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/9 2:15:49       共计:3598 浏览

有哪些设计或实现上的难点?

分布式系统在增大系统容量、提高系统复用性、使系统扩展性更高的同时,同时也有不少难点和缺点。

网络开销

传统架构,所有的业务逻辑都被打成一个代码包进行部署,所有模块运行都是在同一个JVM中,不会存在网络的开销(应用到数据库的网络开销不讨论,这里和主要指代码和代码之间的调用);而分布式架构中,模块和模块可能会被部署到不同的机器上,它们之间的访问需要通过远程调用的方式来实现,网络IO就成为不可忽视的性能瓶颈了。

特别是在微服务的阶段,服务被拆分的比较小,一次完整的业务流程可能需要几个微服务,这时候网络问题更会凸显出来。

通常我们会增加带宽、使用专线等方式,降低网络开销;代码方面,会采用失败重试或者异步化的方式,来解决网络延迟问题,后者也无疑增加了代码实现难度。

服务依赖性问题

一个完整的应用,被拆分成了多个服务,服务和服务之间肯定是有依赖性的;如果有一个关键性的服务挂掉了,那么整个服务链路上的所有服务,都会产生问题。

这时候就需要进行服务治理,梳理出来关键业务和非关键业务,以及服务的调用路径;数据库要做响应的隔离;避免非关键性业务把数据库搞死,从而导致关键性业务也变成不可用;所以,理论上每个服务都要有独立的数据库,数据不做共享,但是现实中经常无法做到。

数据一致性问题

Consistency:强一致性,事务保障,ACID模型;

Availiablity:高可用性,避免单点;

Partition tolerance:高可扩展性。

我们经常会说的CAP原理,也就是CAP这三个因素不可能兼顾,最多只能满足两个;分布式系统来说更为强调A和P,所以会选择适当放弃一致性,或者说分布式系统通常会选择保证最终一致性;为解决这个问题,架构中需要引入消息表、MQ(事务消息)或其他的补偿手段,这无疑也加大了项目实现的难度。

另外,分布式系统也会让测试变得更加的复杂,多层的架构也让运维变得复杂;分布式架构在提高系统可用性的同时,也带来了更多的挑战。

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。
版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:为什么有些面试官喜欢让面试者用纸写代码呢_java | ·下一条:哪里能学做奶茶_java

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有