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

个人做旅游网站的意义地方网站有何作用

个人做旅游网站的意义,地方网站有何作用,1小时前俄乌战况消息,重庆市工程安全建设信息网官网一、单体架构 测试高并发软件 二、微服务 三、SpringCloud 四、微服务拆分 黑马商城模块: 服务拆分原则: 拆分服务: 独立project: maven聚合: 拆分案例: 远程调用: package com.hmall.cart.…

一、单体架构

 测试高并发软件

二、微服务

 三、SpringCloud

四、微服务拆分

黑马商城模块:

服务拆分原则:

拆分服务:

独立project:

maven聚合:

拆分案例:

远程调用:

package com.hmall.cart.config;import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;@org.springframework.context.annotation.Configuration
public class Configuration {@Beanpublic RestTemplate restTemplate(){return new RestTemplate();}
}
@Service
@RequiredArgsConstructor  //自动生成必备参数的构造函数
public class CartServiceImpl extends ServiceImpl<CartMapper, Cart> implements ICartService {/*private final IItemService itemService;*/// @Autowired  Spring不建议使用@Autowiredprivate final RestTemplate restTemplate;/*Spring建议使用构造函数注入*/
/*    public CartServiceImpl(RestTemplate restTemplate){this.restTemplate=restTemplate;}*/
}
 private void handleCartItems(List<CartVO> vos) {// 1.获取商品idSet<Long> itemIds = vos.stream().map(CartVO::getItemId).collect(Collectors.toSet());// 2.查询商品//List<ItemDTO> items = itemService.queryItemByIds(itemIds);//2.1 利用RestTemplate发送http请求,得到http响应ResponseEntity<List<ItemDTO>> response = restTemplate.exchange("http://localhost:8081/items?ids={ids}",HttpMethod.GET,null,new ParameterizedTypeReference<List<ItemDTO>>() {}, //利用反射拿到这个对象上的泛型Map.of("ids", CollUtil.join(itemIds, ",")));//2.2解析响应if(!response.getStatusCode().is2xxSuccessful()){//查询失败 直接结束return;}List<ItemDTO> items = response.getBody();if (CollUtils.isEmpty(items)) {return;}// 3.转为 id 到 item的mapMap<Long, ItemDTO> itemMap = items.stream().collect(Collectors.toMap(ItemDTO::getId, Function.identity()));// 4.写入vofor (CartVO v : vos) {ItemDTO item = itemMap.get(v.getItemId());if (item == null) {continue;}v.setNewPrice(item.getPrice());v.setStatus(item.getStatus());v.setStock(item.getStock());}}

逻辑:

五、服务治理

上文提到的远程调用带来的问题:

注册中心:

Nacos注册中心:

docker run -d \
--name nacos \
--env-file ./nacos/custom.env \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--restart=always \
nacos/nacos-server:v2.1.0-slim

服务注册:

多实例部署:

服务发现:

六、OpenFeign

快速入门:

———————————————————————————————————————————

———————————————————————————————————————————

请求路径参数通过SpringMVC注解@GetMapping以及@RequestParam完成替代

请求参数通过调用该接口方法时传递的参数完成替代

返回值类型通过该接口定义的抽象方法的返回值类型完成替代

从而实现整体替代,简化代码

package com.hmall.cart.client;import com.hmall.cart.domain.dto.ItemDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.Collection;
import java.util.List;@FeignClient("item-service")
public interface ItemClient {@GetMapping("/items")List<ItemDTO> queryItemByIds(@RequestParam("ids") Collection<Long> ids);
}
    private final ItemClient itemClient;    //自动注入private void handleCartItems(List<CartVO> vos) {// 1.获取商品idSet<Long> itemIds = vos.stream().map(CartVO::getItemId).collect(Collectors.toSet());// 2.查询商品//2.1 根据服务名称获取服务的实例列表/*   List<ServiceInstance> instances = discoveryClient.getInstances("item-service");if(CollUtil.isEmpty(instances)){//判断为空 直接结束return;}//2.2 手写负载均衡,从实例列表中挑选一个实例ServiceInstance instance = instances.get(RandomUtil.randomInt(0, instances.size()));URI uri = instance.getUri(); //主机地址 http://localhost:8081//List<ItemDTO> items = itemService.queryItemByIds(itemIds);//2.3 利用RestTemplate发送http请求,得到http响应ResponseEntity<List<ItemDTO>> response = restTemplate.exchange(uri+"/items?ids={ids}",HttpMethod.GET,null,new ParameterizedTypeReference<List<ItemDTO>>() {}, //利用反射拿到这个对象上的泛型Map.of("ids", CollUtil.join(itemIds, ",")));//2.4解析响应if(!response.getStatusCode().is2xxSuccessful()){//查询失败 直接结束return;}List<ItemDTO> items = response.getBody();*/List<ItemDTO> items = itemClient.queryItemByIds(itemIds);if (CollUtils.isEmpty(items)) {return;}// 3.转为 id 到 item的mapMap<Long, ItemDTO> itemMap = items.stream().collect(Collectors.toMap(ItemDTO::getId, Function.identity()));// 4.写入vofor (CartVO v : vos) {ItemDTO item = itemMap.get(v.getItemId());if (item == null) {continue;}v.setNewPrice(item.getPrice());v.setStatus(item.getStatus());v.setStock(item.getStock());}}

底层原理:

代码中通过 itemClient 对象来调用接口方法时,实际上它是一个动态代理对象。

动态代理对象底层逻辑都是由 InvocationHandler 实现

这里的 FeignInvocationHandler  ReflectiveFeign 的一个内部类,实现了 InvocationHandler 接口,   InvocationHandler 接口中的 invoke 方法就是起到了代理的作用 : 所有的被代理对象中的所有业务(方法) 都会通过 invoke 方法实现代理,除了一些基本方法(比如 equals, hashCode ,toString

InvocationHandler 接口的实现类 FeignInvocationHandler 中重写对应 invoke  从而实现代理的方法如下:

最后调用对应的方法发送请求(Client

 

连接池:

OpenFeign底层发送请求使用的是 Client

OpenFeign整合并使用连接池步骤:

最佳实践:

拆分的最佳方式:

方法一:

方法二: 

按照第二种方法实践:

日志输出:

七、服务拆分作业


文章转载自:

http://frfXaTtk.bmgnz.cn
http://xstbphys.bmgnz.cn
http://JppK9Ttv.bmgnz.cn
http://LRa1xA97.bmgnz.cn
http://JZtJEP3e.bmgnz.cn
http://0sEDxbsI.bmgnz.cn
http://iQ7oGum5.bmgnz.cn
http://JRyMZLzr.bmgnz.cn
http://HATXu9BF.bmgnz.cn
http://YFClPnEX.bmgnz.cn
http://W8rgx6bJ.bmgnz.cn
http://9383p8pd.bmgnz.cn
http://L9ekKEvc.bmgnz.cn
http://HHfYRDBX.bmgnz.cn
http://5QFgdio4.bmgnz.cn
http://DcX5AZjI.bmgnz.cn
http://vlkQsV9j.bmgnz.cn
http://RcxijLtf.bmgnz.cn
http://EjABiqas.bmgnz.cn
http://VGpAH3Hk.bmgnz.cn
http://KCqNNumk.bmgnz.cn
http://kzBKBZFK.bmgnz.cn
http://gqPGHHel.bmgnz.cn
http://tpL6lIuu.bmgnz.cn
http://JQOCFOvc.bmgnz.cn
http://iltcc8NY.bmgnz.cn
http://mj3gHzce.bmgnz.cn
http://IqPAaA6L.bmgnz.cn
http://ZVU2J08s.bmgnz.cn
http://LPdpbA4m.bmgnz.cn
http://www.dtcms.com/wzjs/711616.html

相关文章:

  • 大良购物网站建设wordpress图片怎么居中
  • 安庆网站建设推荐安徽秒搜科技做的网站响应速度慢
  • 网站访问量很大怎么办百度授权代理商
  • 自主免费建站网站wordpress 直播 视频教程
  • 检测网站安全南京制作网页培训班
  • 数字城市建设网站安阳工学院图书馆找做网站的书在哪
  • 网站建设好了怎么发布新产品如何快速推广市场
  • wap网站html模板wordpress 访问记录
  • 部队织梦网站模板免费下载c 微信网站开发
  • 温州建设信息网站网站开发与应用 答案
  • 哪些网站可做矿机期货网页模板免费下载源代码
  • 网站上放的动画视频是怎么做的专门做电脑壁纸网站
  • 发布软文网站做网站都需要自己的服务器吗
  • vue做的项目网站wordpress rest发文章
  • 深圳做网站推广优化成都最值得一去的地方
  • 上海营销型网站报价网站HTML怎么做链接
  • wordpress播放网盘沈阳关键词优化费用
  • 中邦建设工程有限公司官方网站网站单页制作
  • 自己做的网站怎么管理用户网站建设综合
  • 西昌市网站建设公司如何在阿里云上做网站备案
  • 普象工业设计网站深圳华鑫峰网站建设
  • 什么叫模板网站软件开发公司网站设计
  • 网站都是每年续费的吗泗洪县城乡建设局网站
  • 昆山汽车网站建设影楼后期修图培训学校
  • 广告网站设计方案什么网站可以做图赚钱
  • 制作网站赚钱不网站推广策略
  • 企业网站建设的三种方式并举例学校资源网站建设目标
  • 网站设计建怎么制作单页网站
  • 网站开发的发展历史及趋势广告公司取名字大全免费查询
  • 天津网站建设培训班珠海房产网