这里说的是为服务设计模式, 题目很大, 也不知道能否说好, 先简单的有一下, 有问题的地方我在修改!
双十一刚刚过去, 我们也沾上一点双十一的热气,现在电商系统可谓五花八门,形形色色,表面看就是一个卖东西, 其实地下包括了商品展示、商品管理、商品库存、商家、支付、保险、运输等等非常多的环节。 有的商品是房子,有的商品是家电等等! 他们的购买流程是一样的吗?估计买房子的流程同其他的流程完全不同了!
传统的应用系统通常如下图:
用户通过互联网访问应用系统, 然后在应用系统内部调用数据库系统。
通常情况下各个功能模块都集中在应用系统中,这样开发简单,维护方便,在业务量不大的情况下还是比较实用的。
但是到了双十一这个超级压力大的情况下, 传统的系统就有些问题了,如上图中小绿负责的模块包括了一个慢查询语句,这样系统的整个资源都被占满了, 造成其他相关模块无辜的被拖累。 具体如下图
上图中可以清楚看到在传统的业务系统中经常将一系列耦合比较小或者相关性不大的模块合并到一起进行开发、测试、部署、维护等等, 这样在业务量不大时还看不出问题, 但当公司业务发展, 系统访问量增大后, 就有了上图的问题。
现在常用做法都是微服务化了, 可以较好的解决这个问题,具体的示意图如下图
如上图, 将一个复杂的单一系统拆分为若干个上图中的小系统, 每个小系统包括原来的一个或者若干个功能模块, 这些小系统可以相互间进行调用,同时这些小系统可以通过一个统一的入口为用户提供服务。
这个方式的好处是, 小系统的功能单一, 不会由于一个慢查询而造成一个模块影响其他模块了。
另外小系统的功能简单开发、升级、维护都非常方便, 可以进行更好的迭代开发了, 快速升级系统。
当然天下没有免费的盛宴, 微服务系统中, 由于部署维护的机器数量增多了, 另外服务和服务之间的调用关系也变复杂了。
首先需要解决服务和服务之间调用的复杂性, 否则随着服务数量的变多, 如何让服务之间进行调用就造成了很大的麻烦, 而这个过程最好是能自动的进行服务找到要调用的服务。 解决办法是找一个公共的空间, 每个提供服务的应用程序, 先公共空间说明(注册)自己, 说明自己谁, 能提供什么服务, 提供方式如何等等。 调用方法也简单了, 也仅仅到公共空间查找自己要找到的服务, 从中获取相关信息,然后根据这个相关信息进行服务和服务之间的调用, 那么这个公共空间其实就是“服务注册中心”
如上图, 通常把微服务中,提供服务给别人调用的系统叫做服务提供者, 把使用别人的服务的系统叫做服务的消费者。服务提供者在启动后要主动注册自己的信息到注册中心, 服务消费者在启动后要到注册中心查询谁提供了自己要调用的服务,这样当需要调用服务时,服务消费者之间通过网络连接调用服务提供者。
注册中心仅仅是信息的中转作用
原文 http://www.iigrowing.cn/wei_fu_wu_she_ji_mo_shi.html