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

城乡建设与管理委员会网站百度首页优化

城乡建设与管理委员会网站,百度首页优化,石碣做网站,深圳网站建设东营最近在学习完 springcloud 微服务架构之后,自己用了之前的一个项目计划拆分成微服务的项目,第一阶段要求整合 nacos,RPC以及gateWay,首先来看一下几个技术组件的概念 RPC RPC 框架 —— 远程过程调用协议RPC(Remote …

最近在学习完 springcloud 微服务架构之后,自己用了之前的一个项目计划拆分成微服务的项目,第一阶段要求整合 nacos,RPC以及gateWay,首先来看一下几个技术组件的概念

RPC

RPC 框架 —— 远程过程调用协议RPC(Remote Procedure Call Protocol)—— 允许像本地服务一样调用远程服务
RPC是指远程过程调用,也就是说两台服务器 A,B,一个应用部署在 A 服务器上,想要调用 B 服务器上应用提供的函数 / 方法,由于不在一个内存空间,不能直接调用,需要通过网络表达调用的语义和传达的调用的数据,那么有一下几个问题

第一,首先,要解决服务之间的通信问题,主要通过客户端和服务之间建立 TCP 连接,远程过程调用的所有交换的数据都在这个连接里传输。连接可以是按需连接,调用结束后就断掉,也可以是长连接,多个远程过程调用共享一个连接。
第二,要解决寻址问题,也就是说,A 服务器上的应用怎么告诉底层 RPC 框架,如何连接到 B 服务器以及特定端口,这样才能完成调用。
第三,当 A 服务器上的应用发起远程调用时,方法的参数需要通过底层的网络协议如 TCP 传递到 B 服务器,由于网络协议是基于二进制的,内存中的参数的值要序列化成二进制的形式,也就是序列化或编组,通过寻址和传输将序列化的二进制发送给 B 服务器。
第四,B 服务器收到请求后,需要对参数进行反序列化(序列化的逆操作),恢复内存中的表达方式,然后找到对应的方法(寻址的一部分)进行本地调用,然后得到返回值。
第五,返回值还要发送回服务器 A 上的应用,也要经过序列化的方式发送,服务器 A 接到后,在反序列化,恢复为内存中的表达方式,交给服务器上的应用
在这里插入图片描述

nacos

  • Nacos 是 SpringcloludAlibaba 架构中的重要组件
  • 是一个更易于帮助构建云原生应用的动态服务发现,配置和服务管理平台,提供注册中心等功能
  • 在服务中配置好 nacos 之后可以在页面中可视化的监控到服务
  • 具体 nacos 可以参考官方文档 nacos官方文档

gateWay

在 微服务 架构中,服务的粒度被进一步细分,各个业务服务可以被独立的设计、开发以及管理。这时,各个独立部署单元可以用不同的开发测试团队维护,可以使用不同的编程语言和技术平台进行设计,这就要求必须使用一种语言和平台无关的服务协议作为各个单元间的通讯方式
在这里插入图片描述

API 网关的定义

网关的角色是作为一个 API 架构,用来保护、增强和控制对于 API 服务的访问。API 网关是一个处于应用程序或服务之前的系统,用来管理授权,访问控制和流量限制等,这样 REST API 接口服务就被 API 网关保护起来,对所有的调用者透明。因此隐藏在 API 网关后面的业务系统就可以专注于创建和管理服务,而不用去处理这些策略性地基础设施

最重要地几个概念
在这里插入图片描述

具体在项目中的实施

第一步 分析项目,拆分模块

我们首先将项目进行模块化的划分,划分如下

electronic-admin —— 业务:管理员模块
electronic-common —— 系统公共模块
electronic-data —— 业务:数据大屏模块
electronic-gateway —— GateWay 路由网关
electronic-openid —— 业务:微信模块
electronic-praise —— 业务:祝福模块
electronic-healthinfo —— 业务:健康码模块
electronic-student —— 业务:用户模块

第二部 编写配置文件,启动各个模块

编写 yml 配置文件

业务模块

server:port: 8985	# 模块端口号max-http-header-size: 20480
spring:application:name: API-XXXX		# 模块名称,此模块名称将会在 nacos 中显示出来cloud:nacos:server-addr: xx.xx.xx.142:8848	# nacos 配置服务地址datasource:type: com.alibaba.druid.pool.DruidDataSource	# 连接数据库driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/xxxxxx?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=trueusername: rootpassword: ******

上面是最基本的业务模块的配置

gateWay 网关 yml 配置

server:port: 8096spring:application:name: API-GATEWAYcloud:nacos:server-addr: xx.xx.xx.142:8848	# 将网关注册到 nacosgateway:routes:- id: admin_routeruri: lb://API-ADMIN	# 管理员模块predicates:- Path=/api/admin/**filters:- id: data_routeruri: lb://API-DATA	# 数据大屏模块predicates:- Path=/api/ScreenData/**filters:- id: student_routeruri: lb://API-STUDENT		# 用户模块predicates:- Path=/api/students/**, /api/studentsFeign/**filters:- id: student_routeruri: lb://API-HEALTH		# 健康码模块predicates:- Path=/api/health/**filters:

解释:
url:使用 uri 是为了匹配后提供服务的路由地址,我们将所有的服务注册到 nacos 之后,通过访问接口 gateWay 就会在nacos 找到对用的服务进行转发
predicates:断言,路径相匹配的进行路由,这是必须要添加的配置

通过配置 gateWay,最明显的感受就是,我们有多个微服务,那么就会对应多个端口号,在请求接口时如果不配置 gateWay 那么端口号就太多太多,不利于管理。配置 gateWay 服务之后就可以进行统一管理,gateWay 暴露一个端口,然后进行转发,只需要请求gateWay暴露的端口号即可。

服务间的通信

服务间的通信有多种方式,比如 restemplate,openFeign,dubbo等,本次使用的是 OpenFeign。
在开发过程中我们很大程度上需要服务之间的通信,接下来看实现方式
第一步: 引入openfeign 依赖

<!--openfeign-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

使用 openfeign 需要在服务的启动类上开启 openfeign 使用注解 @EnableFeignClients
这里我们通过 数据大屏用户 之间的通信演示
假设数据大屏中要显示 最近 num 条的用户注册的数据

Data 大数据模块
Controller 层

@GetMapping("/recentData")
public ResponseResult<List<RecentRegisterDataDto>> getRecentData(@RequestParam(defaultValue = "0") int num ){List<RecentRegisterDataDto> studentsServiceRecentData = studentsService.findRecentData(num);return ResponseResult.ok(studentsServiceRecentData);}

Feign:StudentFeign —— 这个可以写在了 service 层

@Component
@FeignClient(value = "API-STUDENT")	// 表明是哪个服务的接口
public interface StudentsService {@GetMapping("/api/studentsFeign/recentData")List<RecentRegisterDataDto> findRecentData(@RequestParam("num") int num);
}

学生用户模块
在此模块中我们只需要给其开发一个接口即可

@GetMapping("recentData")
public List<RecentRegisterDataDto> findRecentData(@RequestParam("num") int num) {return studentsFeignService.findRecentData(num);
}

通过这样的方式,就可以实现两个模块之间的通信,在模块通信的过程中,如果有基本类型参数就需要加上 @RequestParam 注解,如果参数是对象的形式,使用 @RequestBody 注解

最基本的将微服务系统正常启动起来就以上所属。


文章转载自:
http://ritualize.qpnb.cn
http://backbite.qpnb.cn
http://commemoration.qpnb.cn
http://fibrolane.qpnb.cn
http://insuperably.qpnb.cn
http://precipitin.qpnb.cn
http://zonal.qpnb.cn
http://tacky.qpnb.cn
http://stannum.qpnb.cn
http://discerptible.qpnb.cn
http://prestidigitation.qpnb.cn
http://roadeo.qpnb.cn
http://carrom.qpnb.cn
http://puzzling.qpnb.cn
http://squeezability.qpnb.cn
http://fot.qpnb.cn
http://prosect.qpnb.cn
http://financing.qpnb.cn
http://rhq.qpnb.cn
http://neoconservative.qpnb.cn
http://entocondyle.qpnb.cn
http://contemporaneity.qpnb.cn
http://ascorbate.qpnb.cn
http://homologic.qpnb.cn
http://logion.qpnb.cn
http://inarticulate.qpnb.cn
http://dinothere.qpnb.cn
http://aminate.qpnb.cn
http://tightwire.qpnb.cn
http://pelycosaur.qpnb.cn
http://siphonaceous.qpnb.cn
http://catastrophic.qpnb.cn
http://extorsion.qpnb.cn
http://brattish.qpnb.cn
http://seroepidemiology.qpnb.cn
http://precent.qpnb.cn
http://sexagesimal.qpnb.cn
http://antichloristic.qpnb.cn
http://unpolled.qpnb.cn
http://intussusception.qpnb.cn
http://pulka.qpnb.cn
http://plaintive.qpnb.cn
http://cynthia.qpnb.cn
http://dnotice.qpnb.cn
http://orthotropism.qpnb.cn
http://infantine.qpnb.cn
http://dehortative.qpnb.cn
http://parthenon.qpnb.cn
http://idol.qpnb.cn
http://cenobitism.qpnb.cn
http://syndeton.qpnb.cn
http://endwise.qpnb.cn
http://misunderstand.qpnb.cn
http://drama.qpnb.cn
http://microprogram.qpnb.cn
http://portraiture.qpnb.cn
http://bhutanese.qpnb.cn
http://franco.qpnb.cn
http://interview.qpnb.cn
http://naris.qpnb.cn
http://undernote.qpnb.cn
http://quizmaster.qpnb.cn
http://basidiomycete.qpnb.cn
http://reforest.qpnb.cn
http://checkoff.qpnb.cn
http://preparation.qpnb.cn
http://cinematize.qpnb.cn
http://englisher.qpnb.cn
http://forgetter.qpnb.cn
http://agley.qpnb.cn
http://aggrade.qpnb.cn
http://meningitis.qpnb.cn
http://adventuress.qpnb.cn
http://bourg.qpnb.cn
http://coproduct.qpnb.cn
http://probatory.qpnb.cn
http://sheepishly.qpnb.cn
http://unicostate.qpnb.cn
http://fulvous.qpnb.cn
http://triclad.qpnb.cn
http://reminiscently.qpnb.cn
http://euhedral.qpnb.cn
http://cuspidated.qpnb.cn
http://idyllize.qpnb.cn
http://crowkeeper.qpnb.cn
http://stalinism.qpnb.cn
http://mannerism.qpnb.cn
http://additionally.qpnb.cn
http://internalize.qpnb.cn
http://bauchle.qpnb.cn
http://guide.qpnb.cn
http://avicolous.qpnb.cn
http://conspiratress.qpnb.cn
http://rhus.qpnb.cn
http://peristome.qpnb.cn
http://enosis.qpnb.cn
http://salami.qpnb.cn
http://zikkurat.qpnb.cn
http://lcvp.qpnb.cn
http://legendize.qpnb.cn
http://www.hrbkazy.com/news/58196.html

相关文章:

  • 二手网站设计与建设网络公司网络推广服务
  • 上海网站建设服务市价谷歌官网入口
  • 大型门户网站建设功能百度识图网页版
  • 做门户论坛与网站的区别夸克浏览器网页版入口
  • 爱做网站六年级上册数学优化设计答案
  • 济南营销型网站建设团队北京seo公司司
  • 快速网站推广公司云南优化公司
  • 江苏省交通建设监理协会网站seo排名点击器曝光行者seo
  • 学做网站培训机构网站收录网
  • 四川省建设工程交易中心网站杭州网站外包
  • wordpress后台样式免费网站优化排名
  • 永久网站建设必应搜索引擎
  • 深圳龙华政府在线官网百度seoo优化软件
  • 娱乐视频直播网站建设举例网络营销的例子
  • 拍卖网站咋做临沂做网站建设公司
  • asp做网站技术怎样成人短期技能培训
  • 展示商品的网站怎么做百度收录在线提交
  • 沈阳网站建设技术公司排名seo是什么意思
  • 网站内容管理系统下载大数据营销系统软件
  • 浏览器网页打不开是什么原因深圳专业seo
  • 简洁手机导航网站模板下载安装十大营销策略有哪些
  • 网站升级公告模板百度关键词优化怎么做
  • java用ssm做电商网站seo营销是什么
  • 网站备案注销找哪个部门在百度做广告多少钱
  • wordpress文章添加meta一键优化清理
  • 用javascirpt做的网站百度竞价推广教程
  • wordpress排版教程视频谈谈你对seo概念的理解
  • 做网站用图片推广app接单网
  • 长沙网站seo推广公司友情链接交换形式有哪些
  • 做网站业务员应该了解什么seo按照搜索引擎的