微服务:OpenFeign
微服务
单体的架构的可用性较差,功能之间会互相影响,存在以下问题
团队协作成本高
不同模块间的代码边界模糊
系统发布效率低
每次发布需要变更整个系统
系统可用性差
功能之间容易相互影响
为了解决以上问题,我们引入微服务架构来解决功能间的影响
微服务架构:
需要满足以下几个特点
单一职责
团队自治
服务自治
数据库独立,服务隔离
微服务拆分:
尽量粒度更小
高内聚:
每个服务职责尽量单一
低耦合:
每个服务功能相对独立
拆分服务时一般有两种方式
纵向拆分:按照项目的功能模块进行拆分
横向拆分:抽取功能模块之前的公共业务部分,作为通用服务
微服务架构技术组件集合
服务注册发现
Nacos 注册和发现
统一配置管理
Nacos 配置管理
服务远程调用
OpenFeign,Dubbo
统一网关路由
SpringCloudGateway,
服务链路监控
Zipkin,Sleuth
流控,降级,保护
Hystix,Sentinel
OpenFeign
在spring框架中实现服务的远程调用
依赖导入
<!--openFeign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!--负载均衡器-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
启动OpenFeign
在启动类上添加
@EnableFeignClients(basepacks = "需要扫描的client")
注解,启动OpenFeign功能
编写OpenFeign客户端
定义一个FeignClient接口
@FeignClient("item-service")
//指定服务名称
public interface ItemClient {
//指定调用的接口,与对应服务接口路径一致
@GetMapping("/items")
List<ItemDTO> queryItemByIds(@RequestParam("ids") Collection<Long> ids);
}
Feign连接池
底层发起Http请求,底层支持的http客户端实现包括
HttpURLConnection:默认,不支持连接池
Apache HttpClient:支持连接池
OKHttp:支持连接池
okhttp依赖
<!--OK http 的依赖 -->
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-okhttp</artifactId>
</dependency>
原文地址:https://blog.csdn.net/qq_55630615/article/details/140533429
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!