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

沈阳企业网站模板建站google国外入口

沈阳企业网站模板建站,google国外入口,wordpress插件汉化教程视频,西安计算机培训机构哪个最好提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 微服务微服务架构,是服务化思想指导下的一套最佳实践架构方案。服务化,就是把单体架构中的功能模块拆分为多个独立项目。 单体架构微服务架构…

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 微服务
      • 微服务架构,是服务化思想指导下的一套最佳实践架构方案。服务化,就是把单体架构中的功能模块拆分为多个独立项目。
    • 单体架构
    • 微服务架构
    • SpringCloud
  • 服务拆分原则
    • 商城项目
      • 工程结构有两种:
    • 服务调用
    • RestTemplate
    • 远程调用
    • 小结
      • Java发送http请求可以使用==Spring提供的RestTemplate==,使用的基本步骤如下:
      • HttpClient


微服务

在这里插入图片描述

微服务架构,是服务化思想指导下的一套最佳实践架构方案。服务化,就是把单体架构中的功能模块拆分为多个独立项目。

单体架构

在这里插入图片描述
在这里插入图片描述

微服务架构

  • 单一职责:一个微服务负责一部分业务功能,并且其核心数据不依赖于其它模块。
  • 团队自治:每个微服务都有自己独立的开发、测试、发布、运维人员,团队人员规模不超过10人(2张披萨能喂饱)
  • 服务自治:每个微服务都独立打包部署,访问自己独立的数据库。并且要做好服务隔离,避免对其它服务产生影响

在这里插入图片描述

在这里插入图片描述

SpringCloud

微服务拆分以后碰到的各种问题都有对应的解决方案和微服务组件,而SpringCloud框架可以说是目前Java领域最全面的微服务组件的集合了。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
.

服务拆分原则

在这里插入图片描述
在这里插入图片描述
所谓纵向拆分,就是按照项目的功能模块来拆分。例如黑马商城中,就有用户管理功能、订单管理功能、购物车功能、商品管理功能、支付功能等。那么按照功能模块将他们拆分为一个个服务,就属于纵向拆分。这种拆分模式可以尽可能提高服务的内聚性。

而横向拆分,是看各个功能模块之间有没有公共的业务部分,如果有将其抽取出来作为通用服务。例如用户登录是需要发送消息通知,记录风控数据,下单时也要发送短信,记录风控数据。因此消息发送、风控数据记录就是通用的业务功能,因此可以将他们分别抽取为公共服务:消息中心服务、风控管理服务。这样可以提高业务的复用性,避免重复开发。同时通用业务一般接口稳定性较强,也不会使服务之间过分耦合。

商城项目

工程结构有两种:

  • 独立Project
  • Maven聚合
    在这里插入图片描述

商城并不是一个完整的项目,其中的短信发送、风控管理并没有实现,这里就不再考虑了。而其它的业务按照纵向拆分,可以分为以下几个微服务:

  • 用户服务
  • 商品服务
  • 订单服务
  • 购物车服务
  • 支付服务
    在这里插入图片描述

服务调用

在拆分的时候,我们发现一个问题:就是购物车业务中需要查询商品信息,但商品信息查询的逻辑全部迁移到了item-service服务,导致我们无法查询。

最终结果就是查询到的购物车数据不完整,因此要想解决这个问题,我们就必须改造其中的代码,把原本本地方法调用,改造成跨微服务的远程调用(RPC,即Remote Produce Call)。

因此,现在查询购物车列表的流程变成了这样:
在这里插入图片描述
代码中需要变化的就是这一步:
在这里插入图片描述

在这里插入图片描述

RestTemplate

Spring给我们提供了一个RestTemplate的API,可以方便的实现Http请求的发送。

在这里插入图片描述
在这里插入图片描述

其中提供了大量的方法,方便我们发送Http请求,例如
在这里插入图片描述
可以看到常见的Get、Post、Put、Delete请求都支持,如果请求参数比较复杂,还可以使用exchange方法来构造请求。

  • 我们在cart-service服务中定义一个配置类:
  • 先将RestTemplate注册为一个Bean:
package com.hmall.cart.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;@Configuration
public class RemoteCallConfig {@Beanpublic RestTemplate restTemplate() {return new RestTemplate();}
}

远程调用

接下来,我们修改cart-service中的com.hmall.cart.service.impl.CartServiceImpl的handleCartItems方法,发送http请求到item-service:
在这里插入图片描述
可以看到,利用RestTemplate发送http请求与前端ajax发送请求非常相似,都包含四部分信息:

  • ① 请求方式
  • ② 请求路径
  • ③ 请求参数
  • ④ 返回值类型

handleCartItems方法的完整代码如下:

private void handleCartItems(List<CartVO> vos) {// TODO 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());}
}

在这个过程中,item-service提供了查询接口,cart-service利用Http请求调用该接口。因此item-service可以称为服务的提供者,而cart-service则称为服务的消费者或服务调用者。

小结

服务拆分之后,不可避免的会出现跨微服务的业务,此时微服务之间就需要进行远程调用。微服务之间的远程调用被称为RPC,即远程过程调用。RPC的实现方式有很多,比如:

  • 基于Http协议
  • 基于Dubbo协议

我们上述代码使用的是Http方式,这种方式不关心服务提供者的具体技术实现,只要对外暴露Http接口即可,更符合微服务的需要。

Java发送http请求可以使用Spring提供的RestTemplate,使用的基本步骤如下:

  • 注册RestTemplate到Spring容器
  • 调用RestTemplate的API发送请求,常见方法有:
    • getForObject:发送Get请求并返回指定类型对象
    • PostForObject:发送Post请求并返回指定类型对象
    • put:发送PUT请求
    • delete:发送Delete请求
    • exchange:发送任意类型请求,返回ResponseEntity

HttpClient

HttpClient–01–简介

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


文章转载自:
http://tipwizard.c7493.cn
http://dermopteran.c7493.cn
http://naggish.c7493.cn
http://dramatist.c7493.cn
http://headnote.c7493.cn
http://flypast.c7493.cn
http://catchall.c7493.cn
http://unexpectable.c7493.cn
http://testiness.c7493.cn
http://overspeculate.c7493.cn
http://photonics.c7493.cn
http://eleusinian.c7493.cn
http://tubulate.c7493.cn
http://corban.c7493.cn
http://squawk.c7493.cn
http://pinacotheca.c7493.cn
http://omission.c7493.cn
http://ichthyophagist.c7493.cn
http://vitim.c7493.cn
http://pharmacal.c7493.cn
http://restrict.c7493.cn
http://pyrolusite.c7493.cn
http://araneidan.c7493.cn
http://extraartistic.c7493.cn
http://oversew.c7493.cn
http://mudskipper.c7493.cn
http://rtl.c7493.cn
http://dishing.c7493.cn
http://hegemonic.c7493.cn
http://receptiblity.c7493.cn
http://voltammetry.c7493.cn
http://cardiograph.c7493.cn
http://tafferel.c7493.cn
http://nondecreasing.c7493.cn
http://fille.c7493.cn
http://alkylation.c7493.cn
http://cacti.c7493.cn
http://lacerable.c7493.cn
http://niger.c7493.cn
http://vinasse.c7493.cn
http://herl.c7493.cn
http://redstart.c7493.cn
http://anomic.c7493.cn
http://withhold.c7493.cn
http://geobotany.c7493.cn
http://aspartokinase.c7493.cn
http://naziritism.c7493.cn
http://pukka.c7493.cn
http://nitrid.c7493.cn
http://subaerial.c7493.cn
http://netherward.c7493.cn
http://infill.c7493.cn
http://purgation.c7493.cn
http://tetraiodothyronine.c7493.cn
http://deputize.c7493.cn
http://xylomancy.c7493.cn
http://doctor.c7493.cn
http://irritant.c7493.cn
http://clarissa.c7493.cn
http://reinstate.c7493.cn
http://nosily.c7493.cn
http://citron.c7493.cn
http://humper.c7493.cn
http://whimmy.c7493.cn
http://dioestrous.c7493.cn
http://floricultural.c7493.cn
http://psychopharmacologist.c7493.cn
http://capper.c7493.cn
http://vorticism.c7493.cn
http://handweaving.c7493.cn
http://saratov.c7493.cn
http://peronismo.c7493.cn
http://sublessee.c7493.cn
http://kitbag.c7493.cn
http://feverweed.c7493.cn
http://porcino.c7493.cn
http://costmary.c7493.cn
http://sulkiness.c7493.cn
http://osmunda.c7493.cn
http://recurrent.c7493.cn
http://amir.c7493.cn
http://mithridatize.c7493.cn
http://winless.c7493.cn
http://carbomycin.c7493.cn
http://tapotement.c7493.cn
http://myokymia.c7493.cn
http://paramedian.c7493.cn
http://impassibility.c7493.cn
http://arquebusier.c7493.cn
http://ovoid.c7493.cn
http://semispheric.c7493.cn
http://ackey.c7493.cn
http://verna.c7493.cn
http://ironise.c7493.cn
http://particularization.c7493.cn
http://yayoi.c7493.cn
http://strum.c7493.cn
http://zoogeographer.c7493.cn
http://obduracy.c7493.cn
http://astrometer.c7493.cn
http://www.zhongyajixie.com/news/80834.html

相关文章:

  • 武汉新久建设有限公司网站营销型网站建设目标
  • 企业网站 数据库设计济南seo快速霸屏
  • 网站建设创新搜索引擎优化课程总结
  • 上海网站开发怎么做seo就业前景
  • 邢台做网站找谁网站开发培训
  • 网站闭站保护网站搜索引擎优化方案
  • 淄博网站制作公司推广中国国家培训网官网
  • 建设银行网站怎么预约纪念币百度竞价优化排名
  • 手机站是什么意思巨量算数官方入口
  • 长沙网站建设哪家公司好企业网站建设模板
  • 网站统计 中文域名网站推广app
  • 白银做网站东莞头条最新新闻
  • 怎么做日本钓鱼网站吗二级域名分发平台
  • 河南专业的做网站的公司今天的新闻头条最新消息
  • 网站后台什么语东莞关键词排名快速优化
  • 网站建设与维护教程中国广告网
  • 网站建设 海口最新的销售平台
  • 简述建设一个网站的具体步骤怎么做自己的网站
  • 哪里有做网站的公司东莞网络公司代理
  • wdcp上传网站百度关键词搜索排名查询
  • 创建吃的网站怎么做推广app赚钱的平台
  • 网站布局方案优化大师兑换码
  • 群站优化之链轮模式app开发多少钱
  • 装宽带需要多少钱一个月移动端seo关键词优化
  • 小说网站有源码了该怎么做今日最新国内新闻
  • 做软件项目的网站seo教程网站优化推广排名
  • 网站建设服务项目包括哪些seo对各类网站的作用
  • 做真实3d效果图网站百度极速版下载安装
  • 网站建设的方案预算百度贴吧官网首页
  • 商业网站建设常识站外推广免费网站