我所希望的分布式服务框架

来源:互联网 发布:js杀破狼无损百度云 编辑:程序博客网 时间:2024/04/29 14:59

计算机系统在几十年的发展,从单一应用到单一应用模块化然后再到现阶段最火的分布式。

这种变化解决的一些问题:

1.提高开发效率
2.测试简单化
3.提高运维效率
4.优化项目管理

第一阶段:单一应用~单一应用模块化。这一阶段是什么事都在一个应用里面实现。

第二阶段:单一应用模块化~分布式。该阶段开始将不同的模块分成不同的应用,发展为分布式应用。

第一阶段解决问题
这一阶段解决部分项目开发效率,代码复用率,项目管理方面的问题。模块化的优势在于,将不同业务模块的实现代码分割开了,一个业务模块出现问题,其他业务模块不会受影响。在模块化阶段,一部分公共代码被单独提曲出来,使代码的复用率得到了一定程度的提高。用业务或其他唯独划分模块,项目管理业更加清晰。

第一阶段遇到的挑战:

1.提取公共代码:什么代码应该被做为公共的?

2.业务之间有交集:交集部分如何处理,这一部分是管理中最容易扯皮的。

3.一个模块出现问题:部署的时候整个应用被关闭。

上面提出的3个问题,我们举个简单:A业务与B业务相互依赖。

在没有模块化之前:大家的实现代码应该是A业务B业务的业务处理都在一个文件下(这个确实是这样的,经历过一家公司的系统是C实现的,所有的业务都在一个.c文件中。看到了若干个函数只有微小的区别,函数名字是这样的。methodName1,mehtodNmae2. 这个例子是代码复用的问题,修改一个地方整个系统的功能都要详细测试一遍)

模块后之后:A业务和B业务之间共用的代码可以相互引用,解决了一些问题。但是这样的方式依然感到很糟糕啊。

模块化的过程解决了:部分开发相率的问题,但是依然会存在重复开发的问题。测试同学工作比未模块化少了很多,至少改一个A模块,只会测试与A相关的模块。运维同学的效率根模块化以前一摸一样有没有。

第二阶段解决问题:
这一阶段按照业务或其他纬度将模块分为独立系统。这一阶段开发效率因为专注单一系统开发,系统考虑范围降低,开发效率提高。增加的个系统对接,联调工作,也增加了相当的工作量。测试工作,由于系统独立,考虑范围减小和较小力度的测试。分布式系统对测试工程师所关注的质量和测试粒度2个维度提供的支持是显而易见的。同样独立系统,对于运维工程师,在部署及故障处理的工作单元也是有很大的改善。管理,自己感受。

第二阶段遇到的挑战:

分布式业务系统的挑战包括且不止于下面所列内容:
1.子系统通信
2.分布式事务
3.公共资源处理

我决定狗尾了!!!!!!!!!!!!!