微服务后服务划分及设计的思考总结

2020-11-22  本文已影响0人  MrWho0

架构及代码问题思考

1. 对于需求设计的一点思考---最好维护的代码是没有写出来的代码

程序员Q:这个需求这样做很麻烦
项目经理A: 这块可以先不用考虑,这样就简单很多

上边开发过程中可能碰到的场景,最近看到的一句话:

最好维护的代码是没有写出来的代码

很符合这种场景。在扮演不同角色时,我们思考模式也是不同的。有时候站在产品经理或者项目经理的角度想一下需求,让需求稍微妥协一下,代码就会简单很多。
以下是碰到是两个场景

2. 服务划分---架构划分的原则:合适、简单、演化

>问题Q: 目前微服务拆分了有6个,是不是太细了
我目前的答案A:拆分的不太好,之前参考的互联网的做法,单纯从技术角度目前看下来并不太合适。产品交易流水和产品持仓拆分服务引入了分布式事务问题,目前没有非常好的解决方案;对于部分场景一个文件要多个服务处理,增加了很多额外的代码量;目前业务对于性能的要求也并不是很高。

上边是目前我对于我们服务拆分运行一段时候后的思考。下边是我们和其它同业系统的简单对比(同业系统服务明细见最后):

3. 摘录的别人的架构设计总结以及思考

1. 架构设计的目的

架构设计的主要目的是为了解决软件复杂度带来的问题。
系统复杂度的来源:高性能、高可用、可扩展性、安全性、成本、规模。

思考:针对我们系统复杂度的来源,通过排除法,相对来说系统的复杂度来源在可扩展性,应对各种业务需求及合作方需求的可扩展性,设计的时候需要找到会不断变化的部分,设计为独立服务;
我们做的比较好的地方:例如针对不同合作方的个性化报文要求,拆分了订单中心前置服务做转换;针对不同上游的文件格式,拆分了文件前置服务做配置化的文件转换。

2. 架构划分的原则

合适优于业界领先、简单优于复杂、演化优于一步到位
合适:
1. 没那么多人,却想干那么多活,是失败的第一个主要原因
2. 没那么多积累,却想一步登天,是失败的第二个主要原因
3. 没那么卓越的业务场景,却幻想灵光一闪成为天才,是失败的第三个主要原因
简单:
1. 组件越多,就越有可能其中某个组件出现故障,从而导致系统故障
2. 某个组件改动,会影响关联的所有组件,这些被影响的组件同样会递归影响更多的组件
3. 定位一个复杂系统中的问题总是比简单系统更加困难
演化:
1. 对于建筑来说,永恒是主题;而对于软件来说,变化才是主题
2. 软件架构需要根据业务发展不断变化这个本质特点,软件架构设计其实更加类似于大自然“设计”一个生物,通过演化让生物适应环境,逐步变得更加强大

思考:针对几个原则,针对传统行业,由于没有那个多技术力量,相对保守的设计更加合适;同样,尽量不引入那么多中间件,避免引起的技术复杂度,没有足够专业的技术人员处理;初期没必要服务拆分的太细,应该在不断对接新需求时找到变化的地方进而做抽象、隔离及拆分服务。
我们做的不好的地方:引入的redis、rabbitMQ,做的不太好,对应了一句话手里有一把锤子,看什么都是钉子

上一篇下一篇

猜你喜欢

热点阅读