目录
-
-
-
- 什么是微服务?
- 注册中心
- 配置中心
- 服务网关
- 分布式缓存和数据库
- 分布式搜素
- 消息队列
- 分布式日志服务
- 系统的监控链路追踪
- 持续集成
- 1.认识微服务
- 1.0.学习目标
-
- 1.1.单体架构
- 1.2.分布式架构
- 1.3.微服务
- 1.4.微服务技术对比
- 1.5.SpringCloud
- 1.6.总结
-
-
什么是微服务? 微服务等于Spring Cloud的吗?
不等于,Spring Cloud仅仅是其中一部分。将一个单体的项目拆分为一个个独立的项目,每个项目完成一部分业务功能,将来独立开发和部署。我们把这样一个独立的项目称为一个微服务。一个大型的互联网项目往往包含成百上千个服务,最终形成一个服务集群。
文章图片
注册中心 一个业务往往由多个服务共同完成。比如说,当一个请求来了,她可能先调用了服务a,服务a调用了服务b,服务b又调用了服务c。当服务越来越多时,这些调用关系就越来越复杂。这么复杂的一个调用关系,靠人去维护记录就没有必要。那怎么处理呢,这就有组件—注册中心。
记录微服务中每一个服务的ip、端口、以及她们能干什么
当有一个服务需要去调用另一个服务时,她不需要自己去记录对方的ip信息,只需要去找注册中心,从她那拉取。
文章图片
配置中心 同时,随着服务越来越多,每一个服务都有她自己的配置文件,当我们要更改配置,如果我们逐一修改,那就太麻烦了,所以在微服务里还有一个组件—配置中心。
统一管理服务群里成千上百的配置
假设以后有微服务的配置需要更新,只需要找到配置中心,
它会去通知相关的微服务,实现配置的热更新。
文章图片
服务网关 当我们的微服务运行起来之后,用户就可以来访问我们了,这时候我们的主角—服务网关就登场了。因为我们有那么多微服务,用户怎么知道访问哪一个呢?而且也不是随便一个人就可以访问我们的微服务的。
一部分对用户的身份做校验
另一部分就是将用户的请求路由到具体的服务,同时实现负载均衡
文章图片
分布式缓存和数据库 首先,数据库肯定也是一个集群,但是数据库再多也没有用户多,如何提高效率和抗住高并发呢?这就需要—分布式缓存了。
分布式的缓存也是一个集群
请求先到缓存,缓存未命中,再去查询数据库
文章图片
分布式搜素 简单数据可以用缓存,但是一些复杂数据的搜索和分析,缓存也做不了,这时候就需要用到—分布式搜索。
那么数据库做什么呢?
主要是做一些写操作还有对数据库要求高的数据存储。消息队列 为什么要有它呢?微服务中一个业务往往跨用了多个服务,整个业务的链路就很长。调用时长就会等于每个服务的调用时长之和,所以其实性能是有一定的下降的。
那么什么是异步通信呢?
就是说我服务a不是去调用服务b,而是去通知服务b,然后我服务a就结束了。所以业务链路就变短了,响应时间也变短了。它的吞吐能力就变强了。可以大大提高并发量。
分布式日志服务 在如此庞大的一个微服务中,如果出现了问题,好排查吗?不太好排查,所以需要引进两个组件来解决这个问题。一个便是—分布式日志服务。
它可以去统计整个微服务中成千上百的服务的运行日志,统一地去做一个存储、分析。将来出现问题便好定位了。
文章图片
系统的监控链路追踪 另一个便是—系统的监控链路追踪
它可以去实时地监控我们系统中每一个结点的运行状态、cpu的负载、内存的占用等。一旦出现任何问题,直接可以定位到具体的某一个方法。持续集成 这么大一个微服务,如何部署呢?还采用人工部署,显然不行。因此,我们需要一种自动化的部署。
利用Jenkins工具对微服务进行自动化编译,基于docker再进行打包,形成镜像在基于kubernetes或RANCHER等技术进行自动化部署。这一套我们称之为持续集成。
结合微服务技术再加上持续集成,这才是完整的微服务技术栈。
文章图片
接下来我们来系统得认识一下微服务
1.认识微服务 随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢?
1.0.学习目标 了解微服务架构的优缺点
1.1.单体架构 单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署。
文章图片
单体架构的优缺点如下:
优点:
- 架构简单
- 部署成本低
- 耦合度高(维护困难、升级困难)
分布式架构的优缺点:
优点:
- 降低服务耦合
- 有利于服务升级和拓展
- 服务调用关系错综复杂
- 服务拆分的粒度如何界定?
- 服务集群地址如何维护?
- 服务之间如何调用?远程调用
- 服务的调用关系如何管理?
- 服务健康状态如何感知?
近几年出现的最火的莫过于微服务?什么是微服务?
1.3.微服务 微服务的架构特征:
- 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责
- 自治:团队独立、技术独立、数据独立,独立部署和交付
- 面向服务:服务提供统一标准的接口,与语言和技术无关
- 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题
因此,可以认为微服务是一种经过良好架构设计的分布式架构方案 。
1.4.微服务技术对比
文章图片
文章图片
但方案该怎么落地?选用什么样的技术栈?全球的互联网公司都在积极尝试自己的微服务落地方案。
其中在Java领域最引人注目的就是SpringCloud提供的方案了。什么是SpringCloud呢?
1.5.SpringCloud SpringCloud是目前国内使用最广泛的微服务框架。官网地址:https://spring.io/projects/spring-cloud。
SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验。
其中常见的组件包括:
文章图片
另外,SpringCloud底层是依赖于SpringBoot的,并且有版本的兼容关系,如下:
文章图片
接下来学习的版本是 Hoxton.SR10,因此对应的SpringBoot版本是2.3.x版本。
1.6.总结
- 单体架构:简单方便,高度耦合,扩展性差,适合小型项目。例如:学生管理系统
- 分布式架构:松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东、淘宝
- 微服务:一种良好的分布式架构方案
①优点:拆分粒度更小、服务更独立、耦合度更低
②缺点:架构非常复杂,运维、监控、部署难度提高
- 【微服务|初识微服务技术栈】SpringCloud是微服务架构的一站式解决方案,集成了各种优秀微服务功能组件
推荐阅读
- 小司机上路|编程语言中高级语言中的简单分类和特、优、缺三点
- Spring|【Spring框架】帮助理解AspectJ框架的练习题
- 从零学Java|从零学Java(5)之关键字和保留字,明世隐给AD定规矩!
- Java学习|java继承 this关键字的三种用法(对比super记忆)
- Java语言高级|Java>继承>>this关键字的三种用法及super与this分析使用
- JAVA|JAVA中this关键字详解——>(3种用法)
- 【Java】|【零基础学Java】—this关键字的三种用法+Java继承的三个特点(二十一)
- Java|Java this关键字详解(3种用法)
- java学习|Java初学—super、this的用法以及Java继承的三个特点