什么是微服务,为什么要使用微服务架构

前言

最近这几年微服务比较火,很多技术公司对招聘java工程师,都是以有微服务架构开发经验的求职者优先,仿佛不谈点微服务相关的技术,都显得不是那么主流了。

一:什么是微服务

1、 微服务的概念源于2014年3月Martin Fowler所写的一篇文章“Microservices”(http://martinfowler.com/articles/microservices.html)。
2、微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
3、如果要用比较通俗的解释,我觉得可以用如今手机行业的手机生产制作来形容,如今各个手机厂商每台手机几乎都是各大厂商技术的集合体,就比如一台小米手机,cpu可能来自高通,屏幕来自三星,摄像头来自索尼等等,手机每个部分都由不同厂商提供,强强联合,才能制作一台真正优秀的手机,而微服务就像这样,每个功能点单独完成,最后组成一个强大的项目。

二、为什么使用微服务

提到为什么使用微服务架构就应该先了解一下一体化架构。
1、什么是一体化架构?
答:一体化架构顾名思义,将应用各层打成一个包来部署。为了让代码正常工作,一体化应用的所有组件缺一不可,各部分高度依赖。比如我们常见的普通web项目,一般分为表现层,业务逻辑层,数据访问层,所有代码都放在一个代码库中,某一层的代码变化都影响整个项目的构建和部署。
2、为什么使用微服务架构
答:微服务架构其实就是一种架构风格,我们将整个项目划分为多个独立的小项目,也就是我们俗称的微服务,但是微服务的“’微”并没有明确的定义,可以理解为每个微服务都单独处理某个功能模块,可以独立开发、测试、部署、监控和扩展,甚至可以用不同的编程语言开发它们。它有利于我们平时项目的开发,解决了一体化架构项目难以扩展,开发周期长,故障级联等问题,这也是微服务近几年越来越流行的一个原因。

三、微服务有什么优缺点
1、优点:

  • 独立开发部署服务
  • 速度和敏捷性
  • 更高的代码质量
  • 获得围绕业务功能创建/组织的代码
  • 改善故障隔离。一个服务宕机不会影响其他的服务
  • 易于规模化开发,多个开发团队可以并行开发,每个团队负责一项服务
  • 更容易扩展
  • 可以使用不同的语言

2、缺点

  • 测试工作更加困难
  • 服务调用跨更多节点,分布式事务数据不一致性可能更大。
  • 部署复杂,成本高
  • 开发人员要处理分布式系统的复杂性,提高了开发的复杂性
  • 服务调用跨网络,增加网络IO,降低性能。

3、这里也只是简单的列举了一些优缺点,如果要详细了解百度上很多,也很详细。

四、总结:

上面也只是比较简单说了一下微服务,其实无论哪种技术,哪种架构,有优点,也必有缺点,在开发中,这些问题我们其实天天都可以遇到,就比如常用的一些集合类型,效率高的,线程就不一定安全,线程安全的效率也不一定高。技术是死的,但是人是活的,我们只有面对不同情况,选择不同技术,最后才能真正的以最优的方案解决问题。

你可能感兴趣的:(微服务,spring,cloud,微服务)