微服务

一体化架构所面临的挑战:

● 不灵活——无法使用多种技术去构建一体化应用

● 不可靠——即便系统中只有一个功能不工作了,也会造成整个系统不工作

● 不可扩展——应用无法被轻易地被扩展,因为每次应用需要被升级,都必须重新构建整个系统

● 阻塞持续集成——应用中的很多功能无法同时被构建和部署

● 迭代速度慢——一体化应用中新开发的代码需要很长时间来构建,因为需要一个一个地构建每一块功能。

● 不适用于复杂应用——复杂应用的功能有耦合度很高的依赖

微服务(Microservice Architecture)是近几年流行的一种架构思想,关于它的概念很难一言以蔽之。

微服务,也叫微服务架构,是一种软件架构方式。它将应用构建成一系列按业务领域划分模块的、小的自治服务。

在此引用 ThoughtWorks 公司的首席科学家 Martin Fowler 的一段话:

In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.

谷歌翻译如下:

简而言之,微服务架构风格是一种将单个应用程序作为一套小型服务开发的方法,每种应用程序都在自己的进程中运行,并与轻量级机制(通常是HTTP资源API)进行通信。 这些服务是围绕业务功能构建的,可以通过全自动部署机制独立部署。 这些服务的集中管理最少,可以用不同的编程语言编写,并使用不同的数据存储技术。

微服务的目的是有效的拆分应用,实现敏捷开发和部署 。

优点:

1.独立部署,灵活扩展

2.资源的有效隔离

3.团队组织架构的调整

缺点:

1、分布式的复杂性

  • 对于单体架构来讲,我们可以不使用分布式,但是对于微服务架构来说,分布式几乎是必会用的技术,由于分布式本身的复杂性,导致微服务架构也变得复杂起来。

2、重复劳动

  • 对于单体架构来讲,如果某段业务被多个模块所共同使用,我们便可以抽象成一个工具类,被所有模块直接调用,但是微服务却无法这样做,因为这个微服务的工具类是不能被其它微服务所直接调用的,从而我们便不得不在每个微服务上都建这么一个工具类,从而导致代码的重复。

SOA架构强调的是异构系统之间的通信和解耦合,而微服务架构强调的是系统按业务边界做细粒度的拆分和部署

引: http://www.sohu.com/a/221400925_100039689

什么情况下不用微服务: http://mini.eastday.com/mobile/190710211023339.html# 

共同学习,共同进步,若有补充,欢迎指出,谢谢!

原文地址:https://www.cnblogs.com/dengguangxue/p/11177562.html