微服务架构学习-基础篇--01,微服务架构入门

第一节,为什么使用微服务:单体架构的特点

1,什么是单体架构?
单体架构也称为单体系统,他就是把所有功能 所有模块都耦合在一个系统里面(例如 打包为jar或war),它最大的特点就是整套系统就只有一个进程。
2,单体架构特点

特点描述
测试部署问题测试,部署成本高,业务运行在一个进程中,因此系统中任何程序的改变,都需要对整个系统重新测试并部署。
伸缩性可伸缩性差:单体架构系统由于单进程的局限性,水平扩展时只能基于整个系统进行扩展,无法针对某一个功能模块按需扩展。
可靠性可靠性差:某个bug,例如死循环,内存溢出,会导致整个进程宕机,影响整个系统,影响其他功能。
系统迭代迭代困难:由于所有的功能都在一个系统里面,会导致日常迭代相当困难。例如互联网项目,多个项目每月都有一次正常迭代,必定导致代码git分支过多,分支合代码繁琐困难。
跨语言程度整个系统(甚至整个企业)统一的技术栈,管理起来看似简单,但有时候统一的标准并不适合所有的实际情况。
团队协作整个系统一个团队。如果系统变得庞大,成员就需要学习大量的代码和邻域知识,团队内的沟通和协作也变得低效。因为所有代码都耦合在一起,你要学习关联性功能的代码。

第二节:为什么要使用微服务:微服务的优缺点

1,什么是微服务?
微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可以被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成任务。

2,什么是架构风格?
架构风格是一种设计模式,是一种系统级的设计模式,而不是代码模块的涉及模式。
常用的架构风格一般有4种:
(1)客户端-服务器:将系统分为两个应用,其中客户端向服务器发送服务请求。
(2)基于组件的架构,例如EJB
(3)分层架构,例如MVC
(4)面向服务架构,例如Mule,dubbo,springcloud
在这里插入图片描述
在这里插入图片描述

第三节:MVC,RPC,SOA与微服务的架构区别

在这里插入图片描述

MVC:单体系统,一个服务,一个数据库,架构很简单。
ESB:企业服务总线,中介服务,功能齐全,什么都有,太重。
zk:dubbo的注册中心,比较轻量。
eureka:spring cloud的注册中心,比较轻量。

第四节:如何设计微服务?它的设计原则是什么?

1,AKF拆分原则
在这里插入图片描述
AKF扩展立方体,是一个叫AKF的公司的技术专家抽象总结的应用扩展的三个维度。理论上按照这三个扩展模式,可以将一个单体系统,进行无限扩展。
Y轴(功能):按功能进行拆分,它基于不同的业务拆分。
X轴(水平扩展):将微服务运行多个实例,做个集群加负载均衡的模式。
Z轴(数据分区):基于类似的数据分区。

2,前后端分离原则
在这里插入图片描述
前后端分离原则,简单来讲就是前端和后端的代码分离也就是技术上做分离,我们推荐的模式是最好直接采用物理分离的方式部署,进一步促使进行更彻底的分离。不要继续以前的服务端模板技术,比如JSP,把JAVA,JS,HTML,CSS都堆到一个页面里,稍复杂的页面就无法维护。
这种分离模式的方式有几个好处:
(1)前后端技术分离,可以由各自的专家来对各自的邻域进行优化,这样前端的用户体验优化效果会更好;
(2)分离模式下,前后端交互界面更加清晰,就剩下了接口和模型,后端的接口简洁明了,更容易维护。
(3)前端多渠道集成场景更容易实现,后端服务无需变更,采用统一的数据和模型,可以支撑多个前端,例如 微信h5前端,安卓,IOS。

3,无状态服务
在这里插入图片描述
无状态 就是为了做负载均衡。
状态:如果一个数据需要被多个服务共享,才能完成一笔交易,那么这个数据被称为状态。进而依赖这个“状态”数据的服务被称为有状态服务,反之称为无状态服务。

那么这个无状态服务原则并不是说微服务架构里就不允许存在状态,表达的真实意思是要把有状态的业务服务改变为无状态的计算类服务,那么状态数据也就相应的迁移到对应的“有状态数据服务”中。

场景说明:例如我们以前在本地内存中建立的数据缓存,Session缓存,到现在的微服务架构中就应该把这些数据迁移到分布式缓存中存储,让业务服务变成一个无状态的计算节点。迁移后,就可以做到按需动态伸缩,微服务应用在运行时动态增删节点,就不再需要考虑缓存数据如何同步的问题。

百度而来的解释:
有状态服务:有状态服务在服务端保留之前请求的信息,用以处理当前请求,比如session等。
无状态服务:就是没有特殊状态的服务,各个请求对于服务器来说统一无差别处理,请求自身携带了所有服务端所需要的所有参数(服务器端自身不存储跟请求相关的任何数据,不包括数据库存储信息)。

有状态服务常常用于实现事务。

服务要设计成为无状态的,主要是考虑可伸缩性。如果服务是无状态的,那么对于客户端来说,就可以将请求发送到任意一台服务器上,任何就可以通过负载均衡等手段,实现水平扩展。

基于session和cookie都可以实现事务,可以认为,session是有状态的,而cookie是无状态的。

4,无状态通信-Restful通信分格
在这里插入图片描述

Restful通信风格,有很多好处:
(1)无状态协议HTTP,具备先天优势,扩展能力强。例如需要安全加密,有现成的成熟方案HTTPS可用;
(2)JSON报文序列化,轻量简单,人与机器均可读,学习成本低,搜索引擎友好;
(3)语言无关,各大热门语言都提供成熟的Restful API框架,相对其他的一些RPC框架生态更完善。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值