微服务的学习实际上就是学习Dubbo,因为实际上是通过Dubbo这个框架来实现的微服务。微服务本身只是一种架构风格,所以重点在于Dubbo框架的学习。
image.png


也实现了负载均衡。

很早:没有微服务也没有集群的概念,jar包往tomcat一放就可以,一个进程运行一个程序,实现一个网站的方式就是单体应用。比如项目二。

微服务的理解.png

图:微服务的理解

单体应用的这种集群结点的方式不好。因为可能存在资源的浪费。所以我们需要对整个应用拆分一下。 分布式系统:依然不够好,需要针对其进行改进 微服务:把不同子系统抽取出来的公共的单一功能的模块,这就是微服务。

微服务实现单一的功能。 每一个微服务都可以独立部署,独立对外提供服务。(更细粒度的扩容)

Dubbo.pptx

image.png
image.png image.png


image.png

图:网关

网关:接收前端的请求;将接收到的请求分发给不同的微服务(路由);网关实现的请求的接入,后端的唯一入口。接收前端的http请求,

网关隔离开了前端和后端。 网关属于后端,可以通过写配置文件的方式让网关知道:有哪些服务,哪些服务部署在哪些服务器上。每一个微服务对应的服务器地址都可以告诉网关。 前端服务器请求哪个功能的时候,只需要把请求交给网关就可以。网关知道哪些功能由哪些服务实现,哪些服务部署在哪些服务器上。网关知道那些服务器的IP地址和端口号。

浏览器把请求交给网关,网关分发请求给微服务。 是否登录(网关这里做身份验证)

网关.png

服务治理框架:Dubbo
不同服务器上多个进程之间的事务:分布式事务

image.png

微服务的理论到此为止,接着学习如何基于微服务的框架实现微服务。 微服务的核心问题:服务与服务之间的调用(通信)问题。


介绍

**RPC**(跨进程调用)框架,目前广泛使用的微服务架构框架。
协议和序列化框架都可以插拔,远程接口是基于**Java Interface**,并且依托于**spring**框架(管理Bean生命周期)方便开发。

官方文档 Dubbo2.7

服务消费者去调用服务提供者(代码)

Spring和Dubbo的整合

common-api
image.png
image.png

consumer
image.png

image.png
image.png

provider
image.png

SpringBoot和Dubbo的整合

2个微服务治理框架:springcloud,dubbo
最主要区别:服务之间的调用,dubbo基于**dubbo**协议,springcloud基于**http**协议。


1,拦截器设置-HandlerInterceptor
3,对象属性值的复制和转化:MapStruct框架
4,SPI机制

image.png

怎么使用Mybatis,就怎么使用tk-Mybatis
tk-Mybatis的依赖:复制进来

包含selective的是:非null属性值修改

part-3
MapStruct框架(值的复制)

依赖(pom.xml)