这个时候我们来看微服务架构的第二个原则,是前后端分离原则,其实前后端分离原则非常好理解,
把前端这一部分的技术呢,分离出来,前后端通过调用服务的接口,来完成数据的传输,后端提供数据,
前端拿到数据以后,完成视图的一个渲染,完成视图的一个形式,我们来看一下,为何要做前后端分离呢,
很多人不是说前后端本来不就是分离的吗,其实不是这样的,要从尴尬的JSP讲起,分工精细化从来都是蛋糕
做大的原则,多个领域的工程师最好在不需要接触其他领域知识的情况下去合作,这样才能使效率越来越高,
维护起来也变得更简单,jsp的模板技术融合了html和java代码,使得传统的MVC开发变得如胶似漆,前端做好页面,
后端转化成模板,发现问题再找前端,前端又看不懂JAVA代码,久了就恶性循环,那么前后端的目的就是打破这样一个
尴尬的局面的,其实我们做单体架构项目的时候呢,我单体项目当中呢,没有办法去实现前后端分离的,因为视图层
JSP也是服务端的技术,在这里既要写HTML的东西,我要去做数据的渲染,所以在我们单体项目架构里面,这个时候前后端
是耦合,没有分离概念的一个体现,那么前后端分离的原则,简单的来讲就是前端和后端代码的分离,我们推荐的模式
物理分离的方式,物理分离的方式部署,进一步促使彻底的分离,如果继续使用服务端的模板技术,jsp,他把JAVA,js,html,
css,都堆放到一个页面里,那么这个时候稍微复杂一点的页面就无法维护了
我们来看一下前后端分离的图,浏览器直接去请求我们的服务,我们去做数据的采集,然后将采集到的数据呢,
渲染到我们的视图当中,然后将视图返回给客户端,是我们单体架构的一个特点,但是现在呢,我们想做前后端
分离呢,中间就得加一层了,在浏览器和服务端之间,在我们的后台服务之间,加一个前端服务,这个前端服务的
作用呢,就这么几点,第一处理客户端的请求,并且给客户端一个响应,这是前端服务器处理的第一件事,第二件事是
什么呢,根据客户端所发送的请求,去调用后端服务端的接口,来做数据采集,这是他做的第二件事,第三件事,将采集到的
数据,渲染到模板当中,视图当中,然后将视图返回给客户端浏览器,我们就是通过搭建前端服务的方式,来实现前端和
后台服务端的一个分离,其实我这么一说大家并不是很陌生,如果做过电商项目的时候,其实可以发现,我们电商项目的
设计呢,就具备前后端分离的设计了,我们回顾一下,在我们的电商系统当中,有订单服务,其实像门户首页,还有订单系统,
都属于前端服务,为什么这么说呢,在这里包含了大量的首页和展示信息,但是本身不是做操作的一个服务,当我们去访问
首页的时候,首页当中的数据,其实是通过前端服务,前端服务又去调用我们的后端服务,比如我们有一个Rest服务,而Restful
才去操作数据库的,然后将Rest服务接收到的数据,返回到我们的项目当中,然后拿到返回的数据,再去做视图层的一个渲染,
然后将结果返回给我们客户端浏览器,其实我们的订单项目,其实前后端分离出来的前端服务,我们的Rest服务就是我们服务端,
这种分离有这么几种好处,第一个前后端服务分离,由各自的专家对各自的领域进行优化,这样前端的用户体验,优化效果会更好,
第二个分离模式下,前后端交互的页面会更加的清晰,就剩下了接口模型,后端的接口简单明了,前端多场景渠道更容易实现,后端
服务无需做变更,采用统一的数据和模型,例如微信的前端,PC的前端,安卓的前端,IOS前端,我们之前在讲电商的时候,也画了这个
设计图了,在这个设计图上,我们也可以看到,其实是有很多前端的系统在做服务,只是当时我们在做PC端的,如果你再有微端的,
安卓端的,你只要构建前端服务就可以了,虽然前端对于数据的渲染是不一样的,但是需要拿到的后台数据是一样的,所以通过看这样的
一个设计呢,我们就可以很直观的去体会到,前后端分离所带来的方便之处,所以前后端分离原则呢,也是比较简单的,因为我们之前项目
中也用过了,只是我们当时可能并不太明白,为什么要这么设计,通过前后端分离的原则,做了一下详解,我们的电商项目为什么要采用
这种架构方式,其实就是为了做到前后盾分离的效果,我们主要讲了前后端分离的原则,这一块大家并不是很陌生
我们看微服务架构的第三个原则,就是这个无状态服务,那么大家对无状态服务比较陌生一些,那我们来看一下
什么是无状态服务原则,首先我们来了解一下什么是无状态服务,对于无状态服务呢,首先说明一下,首先说什么
是状态,如果一个数据需要被多个数据共享,才能完成一笔交易,那么这个数据就被称之为状态,其实状态指的是什么呢,
就是我们的数据,进来依赖这个状态数据的服务,被称之为有状态的服务,反之称之为无状态服务,这回我们再来看这个图
我们这个图我们看一下,中间有一个分割线,在分割线的左右两侧,无状态业务计算服务,一个是有状态数据服务,
咱们就看后端业务微服务这一块,当这个服务计算完数据以后,不同的服务,比如分布式缓存服务,还有分布式数据服务,
还有分布式存储服务,其实右侧就是一个有状态服务,是这样的,那么左侧这个呢,他本身只是做了业务的一个计算,所以
左侧就是无状态的业务服务,其实大家看这个图其实挺抽象的,我们重新画一个图,其实对于无状态的服务,我们之前也
接触过,还是在我们的电商项目当中