IT实战联盟博客:http://blog.100boot.cn

一、什么是微服务

微服务(Microservice)是服务化思路的一种最佳实践方向,遵循SOA的思路,各个企业在服务化治理的道路上走的时间长了,踩的坑多了,整个软件交付链路上各个环节的基础设施逐渐成熟了,微服务自然而然就诞生了。

早些年的服务实现和实施思路是将很多功能从开发到交付都打包成一个很大的服务单元,而微服务实现和实施思路则更强调功能趋向单一,服务单元小型化和微型化。(如果用“茶壶煮饺子”来打比方的话,原来我们是在茶壶里煮很多饺子,微服务化之后则基本上是在一个茶壶煮一个饺子,而这些饺子就是服务的功能,茶壶则将这些服务功能打包交付的服务单元)。

论茶壶里“煮饺子”的不同形式.jpg

所以,从思路和理念上来讲,微服务就是要倡导大家尽量将功能进行拆分,将服务粒度做小,使之可以独立承担对外服务的职责,沿着这个思路开发和交付的软件服务实体就叫做“微服务”,而围绕这个思路和理念构建的一系列基础设施和指导思想,称为“微服务体系”。

二、微服务因何而生

随着软件系统的复杂度持续飙升,软件交付的效率要求更高,投入的人力以及各项资源越来越多,基于Monolith的服务化思路就不能满足了(Monolith服务化思路:通常将所有功能的实现都统一到一个开发项目下,但随着功能的膨胀,这些功能一定会分发给不同的开发人员进行开发,造成的后果就是,大家在提交代码的时候频繁冲突,并需要解决这些冲突,单一的开发项目成为了开发期间研发团队的工作瓶颈)。

为了减轻这些苦恼,我们将按照要开发的功能拆分为不同的项目,而负责不同功能的研发人员就可以在自己的代码项目上进行开发,从而解决了大家无法在开发阶段并行开发的苦恼。

总结:一方面微服务可以帮助我们应对飙升的系统复杂度;因一方面微服务可以帮助我们进行更大范围的扩展,从开发阶段项目并行开发的扩展,到交付阶段并行交付的扩展,再到相应的组织结构和组织能力的扩展,都因微服务而受益。

三、微服务带来的好处

1、独立,独立,再独立

可以把每一个微服务都看做一个小的王国,开始从各个层面打造自己的独立能力,从而保障自己的小王国可以持续稳固的运转。

首先,从开发层面来看,每一个微服务基本上都是各自独立的项目(project),而对应各自独立项目的研发团队基本上也是独立对应,这样的结构保证了微服务的并行研发,并且各自快速迭代,不会因为所有研发都投入一个近乎单点的项目,从而造成开发阶段的瓶颈。开发阶段的独立,保证了微服务的研发可以高效运行。简而言之,就是开发的时候各自进行,交付的时候也可以独立交付,从而使得每个微服务从开发到交付整条链路上都是独立进行,大大加快产品的迭代和交付效率。
微服务交付之后需要部署运行,对微服务来说,它们运行期间也是各自独立的(独立运行的好处:第一个就是可扩展性。可以快速的添加服务集群的实力,提升整个微服务集群的服务能力,而在传统的Monolith模式下,为了能够提升服务能力,必须强化和扩展单一节点的服务能力来达成。如果扩展到极限的话就要从软件到硬件整体进行重构了)。

对于Java开发者来说,Web应用都需要以WAR包的形式部署到tomcat、jetty等web容器中运行,即使每个war包提供的都是独立的微服务,但他们都是统一部署在一个web容器中,所以扩展能力受限于web容器作为一个进程的现状,无论如何调整web容器内部实现的线程设置还是会受限于web容器整体的扩展能力,所以现在大家都是一个web容器部署一个war,然后通过复制和扩展多个容器实例来扩展整个应用服务集群。

一个web容器中只部署一个war包的做法带给我们第二个好处,即隔离性。当我们将每个微服务都隔离为独立的运行单元后任何一个或多个微服务的失败都将只影响自己或者少量其他微服务,而不会大面积的波及整个服务运行体系(架构设计上交隔板模式)。

2、多语言生态

微服务既可以使用Java或Go等静态语言完成微服务的开发和交付也可以使用Python或Ruby等动态语言完成微服务的开发和交付,对于团队内部拥有多语言的组织奶说,可以最大化的发挥团队和组织内部各成员的优势(一定要统一微服务的服务接口和协议)。

三、微服务带来的挑战

服务“微”化之后,最显著的特点就是服务的数量增多了,而数量大的这一特点则决定了我们无法通过个性化的生产模式来支撑整个微服务的交付链路和研发体系,这些都涉及人力和资源成本,往往这些都是受限的。

关注我们

更多精彩内容请关注“IT实战联盟”微信*公*众*号哦~~~

IT实战联盟博客:http://blog.100boot.cn

微服务架构学习笔记(一):重新认识微服务相关推荐

  1. 微服务架构学习与思考(05):微服务架构适用场景分析

    一.简述 在实际开发中,需要考虑多种因素,来决定采取哪种架构模式才适合当前业务发展情况. 毕竟微服务也不能"包治百病",不要把它当做万能药.企业研发哪里得病了,觉得只要把" ...

  2. 分布式服务框架学习笔记2 常用的分布式服务框架 与 通信框架选择

    传统垂直架构改造的核心就是要对应用进行服务化,服务化改造使用到的核心技术就是分布式服务框架. 分布式服务框架演进 应用从集中式走向分布式 大规模系统架构的设计一般原则就是尽可能地拆分,以达到更好的独立 ...

  3. SpringCloud微服务架构学习

    SpringCloud 1. 微服务架构理论入门 1.1. 微服务架构概述 微服务架构是一种架构模式,它提倡将单一应用程序划分为一组小的服务,服务之间互相协调,互相配合,为用户提供最终价值.每个服务运 ...

  4. javaweb k8s_K8S微服务核心架构学习指南 ASP.NET Core微服务基于K8S 架构师必备Kubernetes教程...

    K8S微服务核心架构学习指南 ASP.NET Core微服务基于K8S 架构师必备Kubernetes教程 课程内容是关于Kubernetes微服务架构学习课程,基于K8S开展ASP.NET核心进行微 ...

  5. SpringCloud微服务架构学习(二)常见的微服务架构

    SpringCloud微服务架构学习(二)常见的微服务架构 1.Dubbo 阿里开源微服务框架 官网地址:http://dubbo.apache.org/en-us/ 简介: Dubbo是阿里巴巴SO ...

  6. kratos mysql_kratos微服务框架学习笔记一(kratos-demo)

    本文将为您描述kratos微服务框架学习笔记一(kratos-demo),教程操作步骤: 目录 kratos微服务框架学习笔记一(kratos-demo) kratos本体 demo kratos微服 ...

  7. 微服务架构开发实战:如何实现微服务的自动扩展?

    微服务架构开发实战:如何实现微服务的自动扩展? 程序员高级码农II 2020-09-25 07:25:00 如何实现微服务的自动扩展 前面讲了一些关于自动扩展的理论知识,但如何实现自动扩展,并不是三言 ...

  8. 超全,看完这份微服务架构与实践文档,微服务不再难

    前言: 微服务近年来受到了极大的关注并成为趋势,不信的话可以查看 Google Trends. 可以看到从2014年开始人们对它产生了极大的兴趣,随着时间的推移,这一趋势仍在增长. 随着数字化转型的推 ...

  9. DHCP服务_学习笔记

    DHCP服务_学习笔记 DHCP(Dynamic Host Configuration Protocol):动态主机配置协议 Lease:租约    续租时间需要是租期时间的一半 UDP协议: Ser ...

  10. ROS学习笔记六:理解ROS服务和参数

    ROS学习笔记六:理解ROS服务和参数 主要介绍ROS服务和参数,同时使用命令行工具rosservice和rosparam. ROS service service是节点之间互相通信的另一种方式,se ...

最新文章

  1. 金融系列白皮书 |《金融业线上渠道转型的方法与实践》上线
  2. Python蜕变-2017-4-23
  3. win7操作系统上,批处理文件,直接双击的时候,能运行起来。但是以管理员身份运行的时候,都闪退。请问,这是怎么回事?...
  4. docker拷贝文件
  5. 邻结矩阵的建立和 BFS,DFS;;
  6. Quiver快速入门
  7. Git中的pull request真正比较的是什么?
  8. CacheManager操作缓存
  9. 十进制度分秒lisp函数_十进制与度分秒坐标互转
  10. 测试于仕琪 libfacedetection人脸检测
  11. BeX5企业快速开发平台-前端快速开发框架
  12. springboot + vue开发环境搭建
  13. Adobe各种最新版本软件下载 PhotoShop Dreamweaver FW Ai Fl.....
  14. IOS上架时及开发注意事项
  15. 小学和初中计算机的图案,信息技术和小学数学“图形和几何”的有效融合
  16. 禁止查看网页源代码方法
  17. 变量定义和声明的区别(整理)
  18. GD32F330+DS18B20
  19. Cacls Command Question
  20. LCD fb driver for linux 参数计算

热门文章

  1. 深入解读Linux进程调度系列(3)——调度的执行过程
  2. windows 编译FFMPEG
  3. opencv历史代码下载
  4. pcie16x能插1x的卡嘛?_关于电脑能正常进系统但是进bios黑屏的解决办法(DP线连接)...
  5. python新式类中的__new__方法与__init__方法
  6. ensp配置access口_华为路由交换技术 | 虚拟局域网VLAN详解与配置
  7. 2020电信最新套餐一览表_最新!2020年宁波中学排名一览表
  8. oracle不同值,Oracle一张表中实现对一个字段不同值和总值的统计(多个count)
  9. go定时读取mysql_Windows下MySQL定时备份脚本-Go语言中文社区
  10. kettle使用数据库来生成序列_kettle 生成 ktr