一、关于微服务
定义
微服务(Microservices) 是一种软件架构风格,它是以许多小型服务构建而成的系统,各个小型服务之间通过http资源API来互相通信,从而使整个系统运转起来。
优点
单一职责;轻量级的通信;
隔离性,运行在自己的进程中,不会相互干扰;
有自己的数据,数据的独立性,每个微服务都有自己的数据库。
缺点
产生额外的工作、数据一致性的问题、测试困难。
二、主流技术介绍
1.Spring-Cloud
Spring Cloud是一系列框架工具集。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。
常见的spring-cloud子项目
spring-cloud-netflix
spring-cloud-alibaba
spring-cloud
2.服务与服务之间的联系
微信微服务架构
如何通信?
服务与服务之间通过网络进行通信。
1.常见的通信协议
http\dubbo\grpc
2.常用的httpclient
java.net.URL
apache commons httpcomponents/httpclient
okhttp
retrofit
如何调用?
1.服务发现
通过第三方nacos提供的方法找到服务实例。
举例
2.负载均衡
2.1 为解决集群服务性能压力分配不均衡产生的问题。
使用netflix-ribbon作为负载均衡服务,由nacos-discovery引入。
2.2 ribbon内置常用策略
BestAvailableRule 最小并发数
WeightedResponseTimeRule 响应时间加权
RoundRobinRule 轮询
RandomRule 随机
3.共享接口
为什么要实现共享接口?
便于其它服务对它进行调用
如何做到?
将接口拆分成单独的模块,使它的实现类与它分离。
4.配置管理
nacos不仅提供服务发现的功能,同时也提供配置管理的功能。
通过配置一些公共的配置来简化程序员对配置的修改。
5.分布式事务
为解决数据一致性问题,引入分布式事务来处理。
分布式事务是由三个角色事务参与者、事务协调者、事务发起者共同参与的。
事务分为两个阶段:
5.1 预备阶段
由事务协调者通知所有分支事务执行业务操作,并将结果返回
5.2 提交阶段
事务协调者根据返回的结果做统一提交或者回滚
举例
常见事务解决方式
5.3.1 XA模式
在操作数据库时介入,同时开启多个数据库事务,等事务协调者统一处理。
5.3.2 TCC模式
对执行的业务编写多个接口,每个接口对其执行的结果进行提交、回滚等操作,每个事务单独提交,事务协调者最后做统一处理。
5.3.3 SAGAS
每一个服务都存在正向和补偿服务,一旦事务回滚,则全部执行补偿服务。
5.3.4 AT模式
是由seata提供的
执行业务并获取持久化回滚数据,通过seata代理数据源,拦截所有的sql操作,得到sql操作前后的数据,并根据sql生成insert sql插入到undo_log表中,并加入到当前事务,最后提交。如果全都正常提交,则删除undo_log表中的数据,如果回滚,seata则根据表中数据进行回滚操作。
6.服务网关
服务网关是分布式系统的唯一入口,并提供一些通用的功能(例如:ip黑名单,ip白名单,认证、授权,动态路由,日志记录,性能统计,协议转换,限流)。
7.单点登录
属于同一个网站下的不同页面的登录操作只需要做一次。它是基于sa-token实现的,登陆后将数据携带在cookie去访问不同页面,页面解析cookie中携带的数据来判断用户是否登录。
8.服务容错
问题产生:由于分布式系统的弊端,在高并发的通信过程中容易存在服务出错,如果不进行处理,则会造成服务器雪崩。
解决方法:采用Sentinel服务容错框架,可以根据框架提供的方法对资源进行流控、降级等操作,实现对服务资源的控制及容错。
总结
以上就是我对于微服务开发框架主流技术介绍的全部内容,如果有不对的地方请您即使指出,将对我的学习提供很大的帮助,感谢您的阅览!!