当前位置: 首页 > news >正文

微服务项目小结1

01.微服务的概念

  • 单体、分布式、集群 (面试用到)
  • 微服务
  • 把之前的大的应用,按照业务功能拆分成若干个小的模块,每个模块都是独立的开发,测试,上线,维护
  • 缺点: 开发成本高,众多服务出错的处理(容错),分布式事务的问题.

02.搭建项目的环境
- shop-parent(管理统一依赖)
- shop-product-api(存放商品服务实体类)
- shop-product-server(提供商品服务项目)
- shop-order-api(存放订单服务的实体类)
- shop-order-server(提供订单服务项目)

03.基于RestTemplate实现订单服务调用商品的服务.

04.注册中心 (面试常考的点)

  • 解决服务调用的IP端口管理的问题
  • 所有服务启动的时候将IP和端口注册到注册中心
  • 所有服务在启动的时候,拉取服务器上最新服务列表,周期性更新最新的服务列表
  • 实际在远程调用的时候,读取本地的缓存的服务列表
  • 通过心跳的机制实现服务的动态感知.(注册中心在15秒没有收到客户端的心跳,把该服务实例信息健康状态修改成false,在30秒没有客户端心跳,把该服务的实例信息从列表中移除掉)

04.自定义负载均衡
@Autowired
private DiscoveryClient discoveryClient; ===>存储本地服务列表信息,根据服务名获取服务列表

05.SpringCloud提供的负载均衡组件
- 添加依赖
- 在RestTemplate对象中添加@LoadBalanced===>给RestTemplate添加拦截器,在发送请求前将服务名替换成的具体IP地址
- 在程序中 写这样的地址 http://product-service/product/get?pid=1
- 可以修改负载均衡策略,在配置类添加负载均衡的bean

06.远程调用组件Feign
- 调用远程接口像调用本地代码一样.
- 定义接口,在接口上定义@FeignClent(name=“product-service”,path=“/product”)
/**
name: 定义远程调用服务明后才能
path: 远程访问路径前缀
*/
@FeignClient(name = “product-service”,path = “/product”)
public interface ProductFeignApi {
//具体的地址信息
@RequestMapping(“/get”)
//定义参数的名称
Product get(@RequestParam(“pid”) Long pid);
}
工作原理: 通过动态代理+反射的方式,拼接成远程调用的服务的地址,底层httpURLConnection,发送请求,访问远程接口. (面试可能问到)

07.服务雪崩的问题

  • 由于微服务众多,中间存在相互调用关系. 如果某个微服务出现问题,导致其他微服务调用,出现请求阻塞,导致资源被耗尽,出现连锁反应,导致所有的微服务都不可用.
  • 常见容错机制
  • 资源的隔离 (并不会把所有的资源都分配给某一个微服务)
  • 超时机制(当服务调用长时间没有响应,可以主动断开请求,这个线程就可以重新接受其他请求)
  • 限流操作(对服务器提前做压测,了解服务器的情况,对服务接口做限流,保护系统)
  • 熔断机制(对服务器做监控,当CPU,内存,响应时间,错误率,错误数达到设定的阈值,此时服务器压力很大了,主动熔断)
  • 降级机制(当调用其他服务,其他服务不可用的情况下,此时为了用户体验感更好些,走本地的备用方案)
http://www.lryc.cn/news/329196.html

相关文章:

  • 【小熊猫 ide】更新支持mingw 支持c++20
  • ESD保护二极管ESD9B3.3ST5G 以更小的空间实现强大的保护 车规级TVS二极管更给力
  • SAP BTP云上一个JVM与DB Connection纠缠的案例
  • Linux进程的基本概念
  • 设计模式深度解析:AI如何影响装饰器模式与组合模式的选择与应用
  • JAVA面试大全之微服务篇
  • WiFiSpoof for Mac wifi地址修改工具
  • 14 - grace数据处理 - 泄露误差改正 - 空域滤波法(Mascon法)
  • openGauss MySQL兼容性增强
  • 【跟小嘉学 Linux 系统架构与开发】二、Linux发型版介绍与基础常用命令介绍
  • EMD关于信号的重建,心率提取
  • HEVC的Profile和Level介绍
  • Springboot Thymeleaf 实现数据添加、修改、查询、删除
  • 关于 UnityEditorWindow
  • 小狐狸JSON-RPC:wallet_addEthereumChain(添加指定链)
  • Pandas | value_counts() 的详细用法
  • 上岸美团了!
  • Gemma开源AI指南
  • LabVIEW智能家居安防系统
  • [蓝桥杯 2022 省 A] 求和
  • 【C++入门】输入输出、命名空间、缺省参数、函数重载、引用、内联函数、auto、基于范围的for循环
  • Docker + Nginx 安装
  • UE RPC 外网联机(1)
  • AI预测福彩3D第22弹【2024年3月31日预测--第5套算法开始计算第4次测试】
  • Django(二)-搭建第一个应用(1)
  • 前端bugs
  • MCGS学习——水位控制
  • 本地搭建多人协作ONLYOFFICE文档服务器并结合Cpolar内网穿透实现公网访问远程办公
  • Ubuntu 中电子邮件处理工具
  • java多线程——运用线程同步解决线程安全问题