微服务的流行,离不开Martin Fowler,他的博客(https://www.martinfowler.com/articles/microservices.html),
对微服务进行的概括,如果英文不行,可以查看翻译版(http://blog.cuicc.com/blog/2015/07/22/microservices/).
简单来说,微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,
服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并且可通过全自动部署机制独立部署。
这些服务共用一个最小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储技术。
关于微服务的一个形象表达:
微服务优点:
微服务的缺点:
开发人员要处理分布式系统的复杂性。
当网站流量很小时,只需要一个应用,所有功能部署在一起,减少部署节点成本的框架称之为集中式框架。
此时,用于简化增删改查工作量的数据访问框架(ORM)是影响项目开发的关键。
传统架构其实就是SSH或SSM,属于单点应用,把整个业务模块都会在一个项目进行开发,分为MVC架构,
会拆分成控制层、业务逻辑层、数据库访问层(持久层)。
传统架构一般适合于一个人或者小型团队开发。
缺点:耦合度太高,一旦某个模块导致服务不可用,可能会影响到其他模块。
面向服务(SOA)架构
SOA架构代表面向服务架构,俗称服务化。通俗的理解为面向于业务逻辑层开发,将共同的业务逻辑抽取出来形成的一个服务。
提供给其他服务接口进行调用,服务于服务之间调用使用rpc远程技术。
微服务架构是从SOA架构中演变过来的,比SOA架构上的粒度更加精细。让专业的人做专业的事情,
目的就是为了提高效率。每个服务之间互相不受影响,每个服务必须独立部署(独立数据库、独立Redis等),
微服务架构更加轻量级,采用restful风格提供的API,也就是使用HTTP协议+json格式进行传输,更加轻巧,
更加适用于互联网公司敏捷开发、快速迭代产品。
微服务架构如何拆分:
(1)、微服务架构基于SOA架构演变过来,继承SOA架构的优点,在微服务架构中去除SOA架构中的ESB消息总线,
采用http+json(restful)进行传输。
(2)、微服务架构对比SOA架构粒度会更加精细,让专业的人干专业的事情,目的是为了提高效率,每个服务于
服务之间互不影响。在微服务架构中,每个服务必须独立部署,微服务架构更加轻巧、轻量。
(3)、SOA架构中可能数据库存储会发生共享,微服务强调每个服务都有独立数据库,保证每个服务于服务之间互不影响。
(4)、项目体现特征,微服务架构比SOA架构更加适合于互联网公司的敏捷开发、快速迭代版本。
原文:https://www.cnblogs.com/64Byte/p/13275648.html