认识微服务

什么是微服务

微服务是分布式架构的一种,所谓分布式架构就是将服务拆分未微小的服务,而在拆分的过程中就会产生各种问题。

认识微服务_第1张图片

而例如 SpringCloud 等技术就是解决了服务拆分过程中产生的问题,例如服务治理,还会其他的问题,SpringCloud 并没有解决。需要其他技术解决。

认识微服务_第2张图片

所以之前认为 微服务=springCloud 确实是格局太小了。


微服务技术栈/服务治理

在构建微服务架构的时候,首先就是做微服务的拆分。根据业务功能模块,将单体项目,拆分为独立的项目,每个项目完成一部分服务,每个服务独立部署,上线。

拆分微服务之后,一个业务动作需要经过多个服务协作才能完成,服务之间相互调用,那么随着业务的复杂,服务之间的调用关系将会非常复杂,这些复杂的调用就需要专门的机制完成调用之间的管理,例如A服务调用B服务,需要知道B服务的域名或者IP

认识微服务_第3张图片

  • 注册中心

注册中心记录每个微服务的IP/域名以及端口,还有服务的一些信息,如服务能干什么事情,每个服务在调用另外一个服务的时候,通过注册中心去拉当前分布式集群中可用的服务。

由了注册中心,每个服务有自己的配置,服务之间的服务也有可能都相同,维护每个服务的配置也是比较繁琐的事情。

认识微服务_第4张图片

  • 配置中心

配置中心就是统一的管理整个集群的配置。

当微服务跑起来之后,就可以有用户来访问,但是这么多的服务用户应该访问哪个呢?于是就需要一个统一入口
认识微服务_第5张图片

  • 服务网关

不能随便访问哪个服务(涉及到鉴权),也不知道又哪些服务可以访问,一个请求来了,服务网关就可以完成路由,以及负载均衡的功能。

微服务起来,用户多了之后,那么数据库可能会撑不住大的访问量,于是还需要缓存组件。

认识微服务_第6张图片

  • 分布式缓存

将数据库数据放到内存中,以供快速的访问呢,用户请求先到缓存,缓存中没有,才去数据库。

  • 分布式搜索

认识微服务_第7张图片

一个请求会来回调用多个服务,调用链路会比较长,调用时间也会比较长,整个时候就需要使用到异步调用,

  • 消息队列

请求来了,直接将消息丢到消息队列中,请求直接返回,其它订阅了消息的服务去执行。这样整个系统的吞吐就增加了。

复杂的调用,当发生问题的时候,排查问题就会变得困难,于是就需要一个日志平台以及链路追踪。
认识微服务_第8张图片

  • 日志服务

统计整个集群服务的运行日志,例如入参,出参异常等信息,统一的存储,分析。

  • 系统链路追踪

实时追踪系统服务的信息,例如服务栈信息,内存使用情况,CPU 负载等。

认识微服务_第9张图片

微服务部署CD

  • Jenkins- 编译
  • docker - 构建镜像
  • k8s - 编码镜像

认识微服务_第10张图片

意思服务治理 + 服务部署 = 微服务

特点

认识微服务

单体架构

例如说现在有一个商城项目,该项目是一个单体架构,基本不用考虑哪些复杂的架构设计,如 订单模块用户功能等,在写功能的时候网上堆代码就可以了。所以其也有优点

  • 架构简单

其部署也简单,直接将单体架构打成一个包,往Tomcat 一仍就可以了,如果请求多了,那么直接加机器就可以了。所以另外一个有点就是:

  • 部署成本第

但是其缺点也非常大。

业务越来越复杂,模块越来越多,都放在一个项目中,那就意味着代码的耦合度高,代码量多,那么光代码编译,打包就非常低效,代码你中有我,我中有你,开发中根本不该动存量代码。


分布式架构:

按照业务模块将逻辑拆分。

拆分服务之后带来了好处

  • 降低代码耦合度
模块间不影响
  • 有利于服务升级拓展
一个服务升级了,只升级该服务就好,其他服务不涉及。

带来此优势的同时,带来的问题

服务拆分带来的治理和部署问题,常见的问题有:

  • 服务拆分粒度如何考量
  • 服务集群地址如何维护
  • 服务之间如何实现远程调用
  • 服务健康状态如何感知

微服务架构特征

  • 单一职责

微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发。

服务业务更少,影响范围更少了。

  • 面向服务

微服务对外暴露业务接口,

每一个服务均向外暴露调用方式,以供其他服务调用。

  • 自治

每个服务独立,其使用的技术,部署方式,包括数据库等,均可以和其他服务独立。

团队独立,符合敏捷开发。

  • 服务之间的隔离性
服务需要做好隔离,容错,降级,避免出现级联问题(一个出问题,影响到一大片)

国内比较皆知的微服务技术

SpringCloudAlibaba 兼容SpringCloud 和 Dubbo

认识微服务_第11张图片

总结

本篇完成微服务的入门理解,总结起来微服务是2部分内容

  • 服务治理
  • 服务持续发布
  • 微服务和单体的优劣
  • 目前国内流行的技术

推荐:内容以及素材来资源黑马程序员培训课程,质量非常不错的课程。

你可能感兴趣的:(javaspringboot)