继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

从All-In-One到SOA——技术及架构的演进过程(四)

moocer
关注TA
已关注
手记 12
粉丝 1.4万
获赞 537
业务拆分与服务化

服务化的第一步就是要进行业务拆分,这是建立在对技术和业务都有深刻理解基础上的。每个公司的业务都有不同,所以拆分方案也不尽相同,我们可以参考所谓成功的大公司的方案,但是仅能作为参考而已,具体的拆分方式还是要从我们的实际情况出发,选择合适的方案进行。

业务拆分是为了配合服务化过程的,服务化技术方案的选择仍然要选择合适合适我们自己的方案,大公司的方案可以作为参考,一些开源组件可以使用,但是度一定要掌握好。

在服务化实施过程中要注意以下几点:
1)如何分层,层之间的调用关系如何规划;
2)缓存如何规划,读、写缓存分别在哪层、采用什么样的方式;
3)如何能够做到自动化;
4)服务化的高可用与横向扩展如何实现;
5)性能;
6)安全性。

关于分层,我们的讨论广义上的Consumer与Provider(含资源层、业务逻辑层),(范围不包括UI部分内容,即图片、JS、CSS、HTML等内容)。

C与P的部署要考虑到分别多套的场景,当同一个业务有多个消费者和多个提供者的时候,如何能做做到尽可能高效的调用呢?

1)定义高质量的接口,信息完整、有效不能冗余;

2)对传输的数据采用高效的序列化、反序列化方式;

3)尽量减少调用层数,每多一层就会多消耗时间、多一些出问题的概率;

4)C与P都有多个的时候,可以考虑将负载迁移至C端,减少中间的负载层,实
现方式可以用编码的软复杂也可以使用第三方的负载方案;

5)对缓存写的控制,尽量在业务逻辑层修改缓存,因为只有这里才能确定缓存数据的格式、内容,在C端可以读缓存,但是不能更改缓存;

6) 在动态增加P端、C端应用时,避免人工干预互相间的发现(即服务查找与发现过程),要做到自动化(即增加P后能够通知到调用的C),可以采用任何的通知机制,如使用Zookeeper的协调机制或者类似功能的中间件;

7)性能是不能回避的问题,在完成方案后要进行相应的功能、性能测试,同时考虑到生产环境可能会遇到很多意想不到的突发情况,准备好处理预案;

8) 每个服务都有特定的消费者,要确保C端调用P端时不会出现乱用、错用,比如采用服务限制的方式。

【推荐】
从All-In-One到SOA——技术及架构的演进过程(一)
从All-In-One到SOA——技术及架构的演进过程(二)
从All-In-One到SOA——技术及架构的演进过程(三)
从All-In-One到SOA——技术及架构的演进过程(四)
从All-In-One到SOA——技术及架构的演进过程(五)
从All-In-One到SOA——技术及架构的演进过程(六)

打开App,阅读手记
4人推荐
发表评论
随时随地看视频慕课网APP