电商网站开发人员结构,淘宝网站建设的主要工作,白酒最有效的推广方式,上海网站建设套餐01.微服务的概念
单体、分布式、集群 (面试用到)微服务把之前的大的应用#xff0c;按照业务功能拆分成若干个小的模块#xff0c;每个模块都是独立的开发#xff0c;测试#xff0c;上线#xff0c;维护缺点: 开发成本高#xff0c;众多服务出错的处理(容错),分布式事务…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?pid1 - 可以修改负载均衡策略,在配置类添加负载均衡的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内存响应时间错误率错误数达到设定的阈值此时服务器压力很大了主动熔断)降级机制(当调用其他服务其他服务不可用的情况下此时为了用户体验感更好些走本地的备用方案)