深度解读-微服务架构基础知识.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
? ? ? ? ? ? ? ? 深度解读:微服务架构基础知识 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 一. 引言 本篇文章是整理笔者在学习微服务时的入门篇,将探讨以下几点: 什么是单体架构及其优劣 什么是微服务 什么是微服务架构及其优劣 微服务和微服务架构的区别 单体架构与微服务架构的区别 微服务的适用场景 微服务架构所涉及的开发框架有哪些 如何选择框架的不同版本 二. 单体架构 2.1什么是单体架构 简单来说就是一个war包打天下,war包中就包含了各种功能和资源,比如JSP. JS. CSS,业务就是各个功能模块,如下图: 2.2单体架构优缺点 优点: 架构简单,少了很多微服务中的问题(下文会讲是哪些问题) 开发. 测试. 部署简单,特别是部署 缺点: 随业务扩展,代码量越来越多,由于开发人员水平不同,代码质量参差不齐,改动代码时牵一发而动全身,开发人员如履薄冰 部署慢,由于代码量过多,每次部署可能需要几分钟甚至几十分钟 扩展成本高,根据单体架构图,假若支付模块为CPU密集型,需要大量计算,即需要更好的CPU,若订单模块为IO密集型,需要大量磁盘读写,即需要更好的内存和磁盘。单体架构又不支持单模块扩展,则我们就需要更好的CPU. 内存. 磁盘,那么硬件成本就会飞速上涨 不利于新技术发展,想想老板突然一天说我们把Struts2项目往Spring Boot上迁移... 三. 微服务与微服务架构 3.1 什么是微服务 微服务的核心就是将传统的单体架构拆分成单个服务,将业务间进行解耦,每个服务可以单独部署. 可以拥有自己的数据库这样拆分出来的服务就叫做微服务。 就比如说,单体架构中有订单. 支付. 物流. 积分等业务,拆分成微服务,订单服务,支付服务,物流服务,积分服务 这样拆分出来有什么意义呢? 单体架构中若非核心模块出现重大Bug,比如积分模块内存溢出,就会导致整个项目宕机 但若是拆分成微服务,则只是说积分服务不能使用,但核心服务并不会受到影响 3.2什么是微服务架构 微服务架构是一种架构风格,包含如下几个特点: 将一个单一应用程序开发为一组小型服务 每个服务运行在自己的进程中 服务之间通过轻量级的通信机制(http rest api) 每个服务都能够独立的部署 每个服务甚至可以拥有自己的数据库 3.3微服务与微服务架构的区别 微服务是服务的大小和对外提供的单一功能,微服务架构是指把一个个微服务管理起来,对外提供的一套完整服务 3.4微服务架构的优缺点 优点: 每个服务足够小,内聚高,代码更易理解,相较于单体架构,修改几行代码可能需要对整个系统逻辑都要理解 易开发,单个服务功能集中 单个服务可以由小团队进行开发,效率高 扩展成本低,按需扩缩容 前后端分离,Java开发人员能更集中精力关心后端接口的安全性和效率 每个服务拥有独立的数据库,也可以多个服务使用一个数据库 缺点: 增加运维人员工作量,可能会部署非常多的war包(k8s + Docker + Jenkis) 服务之间相互调用,增加通信成本 数据一致性问题(分布式事务问题). 性能监控等 问题定位时间成本增加 3.5单体架构和微服务架构的区别 单体架构扩展 并发增加,上集群,硬件成本高 微服务架构扩展 并发增加,灵活扩展,降低硬件成本,但运维成本. 开发成本上升 数据存储区别 单体架构:仅有一个数据库 微服务架构:每个微服务都可以有一个数据库 3.6微服务的适用场景 适用于: 大型复杂项目(上百万行代码的项目T_T) 快速迭代项目(一天一更,吐血QAQ) 高并发项目(考虑弹性扩缩容T~T) 不适用: 业务稳定,就修修BUG,改改数据 迭代周期长,发布频率按月来算的 四. 开发微服务的框架 4.1相关框架 Spring Boot 快速开发微服务的Web框架 Spring Cloud 微服务架构的一套工具集 Spirng Cloud Alibaba 阿里提供的符合Spring Cloud标准的,一套微服务架构工具集 下图便是Spirng Cloud Alibaba提供的一套工具集,注意虽然有些备注是开源,但只是部分开源,一些核心功能依旧需要付费才能使用,比如Sentinel,开源的话本地限流配置是不能持久化的(可以选择付费,大佬可以改源代码来解决该问题) 4.2如何选择框架的版本 Spring Boot 以2.1.6.RELEASE版本为例 其中2:表示的主版本号,表示是我们的SpringBoot第二代产品 其中1:表示的是次版本号,增加了一些新的功能但是主体的架构是没有变化的,是兼容的 其中6:表示的是bug修复版 所以2.1.6合起来就是springboot的第二代版本的第一个小版本的 第6次bug修复版本 RELEAS

文档评论(0)

智慧IT + 关注
实名认证
内容提供者

微软售前技术专家持证人

生命在于奋斗,技术在于分享!

领域认证该用户于2023年09月10日上传了微软售前技术专家

1亿VIP精品文档

相关文档