微服务探索之架构分类

2017-12-03  本文已影响0人  枫山别院

欢迎访问我的博客,同步更新: 枫山别院

架构的发展
集中式.png

集中式架构的系统,所有的模块都在一个项目中,耦合在一起,甚至是页面。一个项目包含了所有的服务,这种工程一般在项目发展初期还是可以比较实惠的,省钱,容易管理。但是随着业务的发展,会暴露出非常多的局限,例如:拓展性差,单点故障,不容易修改等等。

集群式.png

随着业务量的增加,集中式系统开始不堪重负,这时候,我们要对系统进行调整和优化,我们可以想到的是水平拓展,增加系统节点,组成一个集群对外提供服务。同时,使用Nginx进行负载均衡,DNS轮询等等。

SOA.png

虽然集群提高了系统处理能力,但是还是有拓展性差,不易修改,业务耦合度高等问题,牵一发而动全身。这时候我们可以实施服务化改造,对业务进行垂直化拆分,将一些模块化的业务单独部署,使各个系统的职责清晰化。拆分系统的时候,并不是粒度越细越好,太细反而增加维护的复杂度。

Image 1.png

微服务架构是SOA的进一步细化的结果,它的要求是:根据业务模块划分服务种类;每个服务独立部署且相互隔离;通过轻量级API调用;具有良好的高可用性。它的特点是服务细粒化,责任单一化,服务隔离化,管理自动化。同时也为我们带来了一些挑战:运维要求提高,分布式复杂性增加,依赖关系复杂,通信成本增加。

点击微服务架构模式可以查看更多的微服务架构。

image.png

服务网格是微服务新秀,代表作是Istio,它是微服务加上了服务治理。

微服务架构选型

在上面的微服务架构图中,除了服务需要部署多点之外,服务网关和注册中心也必须部署多点才能保证没有单点故障。微服务架构的可选方案非常多,有:Netflix、Spring Cloud、WildFly Swarm、KumuluzEE、Dropwizad等等。我们也可以基于微服务的原理,自己实现微服务:使用Spring Boot开发服务,使用Zookeeper注册服务,使用Node.js开发网关。我们公司开发了自己的微服务,使用Java开发的网关,整体架构图如下: Image 2.png

服务、网关、注册中心、Nginx都是多点,这种情况下,可以避免有单点故障问题。

今日强心剂

We can be heroes in our own lives,everyone of us ,if we only hava the courage to try .

转载请注明出处,谢谢!

上一篇下一篇

猜你喜欢

热点阅读