初识微服务 --微服务介绍篇
文章目录
简介与前言
本篇文章主要介绍三部分:微服务的概念、微服务的作用、以及微服务的常用技术栈。适合有一定SpringBoot单体项目经验的新手学习。文章内容通俗易懂,帮你一站式搞定微服务OVO!助力编程之路升级打怪!
一、分布式架构与单体架构的区别
单体架构 | 分布式架构 | |
---|---|---|
部署 | 将业务功能集中在一个项目中开发,打包成一个包部署 | 根据业务功能对系统进行拆分,每个业务作为一个独立模块开发 |
优点 | 架构简单、部署成本低 | 耦合度低,有利于服务升级拓展 |
缺点 | 耦合度高 | 架构复杂、成本高 |
适用场景 | 面向企业内部的小型项目 | 大型项目 |
二、微服务是什么?
误区:微服务技术就是SpringCloud吗?
答案显然不是。微服务是分布式架构的一种,SpringCloud仅仅是解决了服务拆分的治理问题,但对于其他的分布式出现的更复杂的问题它其实并没有给出解决方案。
- 微服务的特征
单一职责:微服务的拆分颗粒度更小,每个服务对应唯一的业务功能,做到单一职责,避免重复开发
面向服务:微服务对外暴露业务接口
自治:团队独立、技术独立、数据独立、部署独立
隔离性强:服务之间要做好隔离、容错、降级,避免出现级联问题
三、微服务主要做什么?
-
第一步:业务拆分
根据业务功能模块把单体项目拆分成多个独立项目,每个项目完成一部分功能,并单独开发和部署
,它们就被称为服务。
例如:将一个单体的电商系统根据业务功能拆分成订单模块、顾客模块、支付模块、商品模块 -
第二步:注册中心
多个服务组成一个服务集群,当服务集群里的服务越来越多,服务间的调用也越来越复杂,通过人力来记录服务之间的调用关系是不现实的。因此需要一个注册中心,来记录微服务中每个服务的IP、端口以及它能干什么
。当有个服务需要去调用另一个服务的时候,只需要通过注册中心来拉取目标服务的注册信息。 -
第三步:配置中心
每个服务都有单独的配置,如果后续需要修改服务的配置,逐一去修改太过麻烦,所以微服务需要一个配置中心,来统一的管理服务集群里每个服务的配置。如果后续有服务需要变更,通过配置中心,通知相关微服务,实现配置的热更新
。 -
第四步:网关组件
服务集群中有许多微服务,用户怎么能知道访问哪个呢?并且也不是哪个用户来了都能访问我的服务。
例如:一个小区,有一个看门的大爷,想要进入小区首先要核实一下人员的身份,核实合法之后,你想访问1307号住户,大爷会告诉你1307住户在哪里。
网关主要就是做身份校验、路由请求、负载均衡
。 -
第五步:请求数据库
请求到了业务后,该访问数据库就去访问数据库,并把数据返回给用户。 -
第六步:分布式缓存
真实业务中的数据库往往是以集群的方式存在的,但集群不可能无限扩张,数据库总会面临性能瓶颈问题。因此我们可以在微服务中引入分布式缓存。缓存就是将数据库数据放入内存当中,内存查询效率较高,可以有效提升性能
。缓存一般也是以集群的形式存在。用户请求先到缓存,缓存未命中了再去访问数据库。 -
第七步:分布式搜索
业务中可能存在一些复杂的搜索功能,简单的搜索可以走缓存,但一些海量数据的查询,搜索和分析缓存也做不了,这时候就要用到分布式搜索功能
。数据库在微服务中主要是做数据的写操作,以及事务类型的对数据安全要求较高的数据存储。 -
第八步:消息队列
对于微服务,一个请求有可能跨越多个服务,比如一个请求先调用服务A,A再调用服务B,B再调用服务C,整个服务的链路就会很长,响应速度较慢。而使用消息队列可以达到异步通信的效果
。使用消息队列后的效果如下:
请求调用服务A,A通知B和C去干活,B和C收到消息后去干活,而服务A不必等待B和C干活,直接结束。
这样业务响应变快,吞吐能力提升
,在一些高并发场景下就可以去利用了。 -
第九步:分布式日志服务
如此庞大的服务,出现问题不好排查,因此引入分布式日志服务用于统计整个集群中成千上百个服务的运行日志,并统一的存储,分析
。将来出现问题就能快速定位。还可以做系统监控与链路追踪,可以实时监控集群中每一个节点的运行状况、CPU的负载,一旦出现问题就可以定位到具体的方法,对应的栈信息。 -
第十步:持续集成
利用Jenkins进行自动化的编译,利用Docker进行自动化的打包、镜像,利用k8s等技术实现自动化的部署
四、微服务学习路线
1.服务治理
SpringCloud框架所包含的技术
2.缓存技术
分布式的缓存,例如Redis、Nginx
3.异步通信技术
MQ相关的知识,例如RabbitMQ、kafka
4.分布式搜索技术
例如ES
5.DevOps
持续集成技术例如Docker,Jenkins
五.微服务技术对比
Dubbo | SpringCloud | SpringCloudAlibaba | |
---|---|---|---|
注册中心 | ZoopKeeper、Redis | Eureka、Consul | Nacos、Eureka |
服务远程调用 | Dubbo协议 | Feign(http协议) | Dubbo、Feign |
配置中心 | 无 | SpringCloudConfig | SpringCloudConfi、Nacos |
服务网关 | 无 | SpringCloudGateway、Zuul | SpringCloudGateway、Zuul |
服务监控与保护 | dubbo-admin,功能弱 | Hystrix | Sentinel |
SpringCloudAlibaba同时兼容了Dubbo和SpringCloud
六.初识SpringCloud
介绍:全球运用最广泛的微服务框架
作用:集成了各种微服务的功能组件,并基于SpringBoot实现了组件的自动装配
总结
以上就是今天要讲的内容,本文仅仅简单介绍了微服务的概念以及常用技术栈,后续的学习请关注更新OVO!