目录
[1. 微服务框架介绍](#1. 微服务框架介绍)
[2. 服务架构演变](#2. 服务架构演变)
[3. 微服务技术对比](#3. 微服务技术对比)
[4. SpringCloud](#4. SpringCloud)
一:认识微服务
本课程学习于黑马,会通过分层次学习,分为三部分去讲解微服务:实用篇、高级篇、面试篇。
分层次学习
微服务技术栈
1. 微服务框架介绍
思考:什么是微服务?
答: 第一反应肯定是SpringCloud技术,但不仅仅是;微服务实际上是分布式架构的一种,就是把服务做拆分,拆分时会出现问题需要解决;而SpringCloud仅仅是解决服务治理问题。
那么一个完整的微服务需要哪些知识呢?
(1)微服务架构的第一件事就是项目的拆分,独立开发每个服务;
(2)当业务越来越多,越来越复杂时,它们之间的调用关系就会越来越复杂,想要记录和维护,需要一个组件---注册中心(记录每个服务的IP、端口等信息);
(3)每个服务都有自己的配置文件,将来要更改配置逐一去更改很麻烦,所以还有一个组件---配置中心(拉取配置信息,实现配置的热更新);
(4)当微服务运行以后,用户就可以进行访问,这里就需要一个组件---服务网关(访问哪一个?谁能访问?对用户的身份进行验证,可以把用户的请求路由到具体的服务);
(5)服务接到请求处理业务,访问数据库,再把数据返回给用户。数据库集群在庞大,也扛不住大量用户的高并发,此时就需要组件---分布式缓存(把数据库的数据放到内存当中,先到缓存,缓存未命中,再去数据库查,内存的查询效率肯定是比数据库高的);
(6)还有一些复杂的搜索功能,简单数据可以走缓存,一些复杂的搜索缓存无法解决,此时就需要另外一个组件---分布式搜索;
(7)在为微服务中还需要异步通信的消息队列组件,一个请求来了调用a,a调用b,b调用...整个业务的链路就会很长,调用时长就等于每个服务调用的时长之和,性能下降。而异步通信的消息队列不是去调用a而是通知a,通知完以后就结束了,业务的链路就变短了,响应时间就变短了,吞吐能力变强;
(8)当然那么庞大的微服务,在出现问题排查是个大问题,所以需要引入两个新的组件---分布式日志服务 (统治成千上百服务的日志,统一的存储和分析)和系统的监控链路追踪(实时监控这个服务每一个节点的运行状态,CPU的占用等情况);
(9)庞大复杂的微服务集群怎么部署呢?需要一个自动化的部署---Jenkins (自动化的编译),在使用Docker (打包形成镜像),在基于K8s实现自动化的部署;
技术栈很多很杂,进行梳理学习
2. 服务架构演变
单体架构
单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署。
例如:一个商城的项目,把所有的功能模块放到一个项目中进行打包部署到Tomcat服务器
优点:
①架构简单;②部署成本低;
缺点:
①耦合度高;适合部署一些小型的项目;
分布式架构
分布式架构:根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。
例如:把一个商城项目的每个模块都进行拆分成一个项目去开发。
优点:
①降低服务耦合;
②有利于服务升级拓展
服务治理
拆分也会带来一些问题:都是一个单体项目,部署在不同的服务器,调用时会出现远程调用(跨越服务器)的问题。分布式架构的要考虑的问题:
①服务拆分粒度如何?怎么拆,把服务作为独立的模块。
②服务集群地址如何维护?上百个机器的地址怎么维护。
③服务之间如何实现远程调用?跨服务的调用。
④服务健康状态如何感知?服务器的状态,有可能宕机。
微服务
微服务是一种经过良好架构设计的分布式架构方案,微服务架构特征:
①单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发;
②面向服务:微服务对外暴露业务接口,用来远程调用;
③自治:团队独立、技术独立、数据独立(每个服务独立的数据库)、部署独立;
④隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题;
例如:一个会员的功能,进行进一步的细化拆分
总结:
(1)单体架构特点
简单方便,高度耦合,耦合度高,扩展性差,适合小型项目。例如:学生管理系统。
(2)分布式架构特点
松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东、淘宝。
(3)微服务:一种良好的分布式架构方案
优点:拆分粒度更小、服务更独立、耦合度更低。
缺点:架构非常复杂,运维、监控、部署难度提高。
3. 微服务技术对比
微服务这种方案需要技术框架来落地,全球的互联网公司都在积极尝试自己的微服务落地技术。在国内最知名的就是SpringCloud和阿里巴巴的Dubbo。
微服务技术对比
|-------------|---------------------|-----------------------------|-----------------------------|
| | Dubbo | SpringCloud | SpringCloudAlibaba |
| 注册中心 | zookeeper、Redis | Eureka、Consul | Nacos、Eureka |
| 服务远程调用 | Dubbo协议 | Feign(http协议) | Dubbo、Feign |
| 配置中心 | 无 | SpringCloudConfig | SpringCloudConfig、Nacos |
| 服务网关 | 无 | SpringCloudGateway、Zuul | SpringCloudGateway、Zuul |
| 服务监控和保护 | dubbo-admin,功能弱 | Hystix | Sentinel |
企业需求
①使用SpringCloud技术栈、服务接口采用Restful风格、服务调用采用Feign方式;
②使用SpringCloudAlibaba技术栈、服务接口采用Restful风格、服务调用采用Feign方式;
③使用SpringCloudAlibaba技术栈、服务接口采用Dubbo协议标准、服务调用采用Dubbo方式;
④基于Dubbo老旧技术体系、服务接口采用Dubbo协议标准、服务调用采用Dubbo方式;
4. SpringCloud
(1)SpringCloud是目前国内使用最广泛的微服务框架。官网地址:Spring Cloud。
(2)SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验:
SpringCloud与SpringBoot的版本兼容关系如下:
注:本次学习的版本是 Hoxton.SR10,因此对应的SpringBoot版本是2.3.x版本。
图书推荐:《巧用ChatGPT快速提高职场晋升力》
本次送书 1 本!
抽奖方式:利用程序进行抽奖。
参与方式:关注博主(只限粉丝福利哦)、点赞、收藏,评论区随机抽取,最多三条评论!
关键点
ChatGPT赋能职场,一本书掌握AI在职场中的的全面应用
10大创新技术+30多个实战案例+50多种ChatGPT应用策略
有效提高沟通能力、提高工作效率、提升个人品牌、提升创造力、提升管理能力
助你在竞争激烈的职场环境中脱颖而出
卖点
★超实用通过30多个实战案例和操作技巧,使读者能够快速上手并灵活运用ChatGPT技术及提高职场晋升力。
★巨全面 50多种ChatGPT应用策略,涵盖提高沟通能力、提高工作效率、提升个人品牌、提升创造力、提升领导力和管理能力、促进职业发展全方面。
★真好懂以通俗易懂的语言解释ChatGPT的原理及应用,零门槛提高职场硬核能力。
★高回报学习本书,全面提升职场能力,大大提高工作效率,促进职业发展,实现自我价值。
内容简介
本书从ChatGPT的基本知识、技术原理和应用场景出发,详细探讨了如何运用ChatGPT提升职场竞争力。全书共分为10章,内容包括ChatGPT在职场沟通、工作效率、个人品牌价值、职业发展、创意思维、领导力与管理、学习与自我成长、数据分析、服务与谈判等方面的应用。通过阅读本书,读者可以了解到ChatGPT的强大功能和在各领域的实际应用,从而有效提升职场竞争力。
本书内容丰富、实用性强,旨在帮助读者在职场中更好地运用ChatGPT技术。适合职场人士、管理者、开发者及对人工智能技术感兴趣的读者阅读。同时,本书也适用于相关培训机构作为教材使用,助力职场发展。
当当网链接:当当图书
京东的链接:京东安全