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

分类信息网站建设多少钱wordpress 图片自述

分类信息网站建设多少钱,wordpress 图片自述,个人微信小程序怎么做,龙华网站推广培训【微服务学习笔记(一)】Nacos、Feign、Gateway基础使用 总览Nacos安装配置Nacos注册中心服务多级存储模型负载均衡规则环境隔离 配置管理配置拉取配置热更新多服务共享配置 Feign远程调用配置性能优化Fegin使用 统一网关Gateway搭建网关路由断言工厂&…

【微服务学习笔记(一)】Nacos、Feign、Gateway基础使用

  • 总览
  • Nacos
    • 安装配置
    • Nacos注册中心
      • 服务多级存储模型
      • 负载均衡规则
      • 环境隔离
    • 配置管理
      • 配置拉取
      • 配置热更新
      • 多服务共享配置
  • Feign
    • 远程调用
    • 配置
    • 性能优化
    • Fegin使用
  • 统一网关Gateway
    • 搭建网关
      • 路由断言工厂(Route Predicate Factory)
      • 路由过滤器(GatewayFliter)
      • 全局过滤器(GlobalFilter)
    • 过滤器执行顺序
    • 跨域

本篇内容为学习笔记,学习链接为SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课

课程资料链接可在视频下方找到,此处不粘贴,而以下的代码都是资料中有的,只不过做为记录单独粘贴,做为学习使用的参考步骤。

总览

微服务中需要用到的内容:
服务网关、 服务集群、 注册中心、配置中心、消息队列,在和数据库连接过程中则用到分布式缓存、分布式搜索,还需要的额外服务为分布式日志、系统监控链路追踪。

在以上的完成后,使用Jenkins完成自动化编译的过程,由Docker打包成镜像。
在这里插入图片描述

各个内容中所需的技术:

  • 微服务注册发现
    • Eureka
    • Nacos
    • Consul
  • 服务远程调用
    • OpenFegin
    • Dubbo
  • 服务链路监控
    • Zipkin
    • Sleuth
  • 统一配置管理
    • SpringCloudConfig
    • Nacos
  • 统一网关路由
    • SpringCloudGateway
    • Zuul
  • 流量监控、降级、保护
    • Hystix
    • Sentinel

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

安装配置

Nacos文档链接
可以参考文档下载Nacos。

Windows启动命令(standalone代表着单机模式运行,非集群模式):

startup.cmd -m standalone

打开nacos -> bin目录中,使用cmd启动,输入以上命令,点击生成的地址即可进入Nacos页面。

使用
项目中:
父工程pom文件:

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.5.RELEASE</version><type>pom</type><scope>import</scope>
</dependency>

子工程pom文件:

<!-- nacos客户端依赖包 -->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

客户端子配置文件(application.yml)中:

spring:application:name: userServicecloud:nacos:server-addr: localhost:8848

Nacos注册中心

服务多级存储模型

一级为服务、二级为集群、三级为实例。

项目中采用配置:

    nacos:server-addr: localhost:8848discovery:cluster-name: CQ #自定义集群名称

集群的设置可让某一个服务被集群内的服务请求优先访问。

负载均衡规则

NacosRule优先选择本地集群访问,本地集群内随机访问各个服务,本地集群无服务时进行跨集群访问:
在这里插入图片描述

在Nacos页面中,根据权重调整(0~1),权重越小,访问的概率越小:
在这里插入图片描述

环境隔离

通过namespace进行环境隔离:
1、nacos命名空间中创建
2、客户端服务中放入namespace生成的id号
3、重启服务,刷新nacos页面

spring:cloud:nacos:server-addr: localhost:8848discovery:cluster-name: HZ #自定义集群名称namespace: c2a69c6f-995c-4cc0-a3e1-8f545ece5875

在这里插入图片描述
在这里插入图片描述
默认情况下服务为临时实例,心跳检测即为每隔一段时间,向注册中心发送内容证明还在服务。
而非临时实例的主动询问,询问结果为服务关闭时,注册中心会等待服务恢复。

临时实例修改为非临时实例:

spring:cloud:nacos:server-addr: localhost:8848discovery:cluster-name: HZ #自定义集群名称namespace: c2a69c6f-995c-4cc0-a3e1-8f545ece5875ephemeral: false #是否为临时实例

修改后在Nacos中心查看:

在这里插入图片描述

配置管理

获取配置原理:
在这里插入图片描述

添加配置,打开Nacos页面:

在这里插入图片描述

配置拉取

客户端依赖

<!--        nacos配置管理依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>

resouces中新建bootstrp.yml文件,内容符合在nacos配置管理中的配置:

spring:application:name: userserviceprofiles:active: dev #环境cloud:nacos:server-addr: localhost:8848config:file-extension: yaml #文件后缀名

配置热更新

方法一:
通过@Value注解注入,@RefreshScope刷新

@RefreshScope
public class UserController {@Autowiredprivate UserService userService;@Autowiredprivate PatternProperties patternProperties;@Value("${pattern.dateformat}")private String dateformat;
}

方法二:
注入后自动刷新,声明于类前

@ConfigurationProperties(prefix = "pattern")

多服务共享配置

多服务共享配置会根据读取优先级来进行配置,在此处主要介绍各个配置文件的优先级,以此来完成所想达到的共享配置目标。

微服务会从nacos读取的配置文件:

  • [服务名]-[spring.profile.active].yaml,环境配置
  • [服务名].yaml,默认配置,多环境共享

优先级:

[服务名]-[环境].yaml > [服务名].yaml > 本地配置

Feign

Feign为声明式Http客户端,帮助实现http请求发送,其中已经集成了ribbn,不需担心负载均衡。

远程调用

客户端依赖:

<!--feign客户端依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>

@EnableFeignClients,自动装配开关

@EnableFeignClients(clients = UserClient.class,defaultConfiguration = DefaultFeignConfiguration.class)
public class OrderApplication {
}

创建新类UserClient

@FeignClient(value = "userservice")
public interface UserClient {@GetMapping("/user/{id}")User findById(@PathVariable("id") Long id);
}

OrderService

   @Autowiredprivate UserClient userClient;public Order queryOrderById(Long orderId) {// 1.查询订单Order order = orderMapper.findById(orderId);// 2.用Feign远程调用User user = userClient.findById(order.getUserId());// 3.封装user到Orderorder.setUser(user);// 4.返回return order;}

配置

在这里插入图片描述
日志配置

方法一:
配置文件中:

feign:client:config: default:loggerLevel:FULL #看所有的日志

方法二:
在这里插入图片描述

性能优化

方法一:使用连接池HttClient或者OKHttp代替默认URLConnection
客户端依赖配置:

<!--引入HttpClient依赖--><dependency><groupId>io.github.openfeign</groupId><artifactId>feign-httpclient</artifactId></dependency>

客户端配置:

feign:httpclient:enabled: true # 支持HttpClient的开关max-connections: 200 # 最大连接数max-connections-per-route: 50 # 单个路径的最大连接数

方法二:日志级别尽量不使用basic或none

Fegin使用

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

统一网关Gateway

网关功能:

  • 身份认证和权限校验
  • 服务路由、负载均衡
  • 请求限流

在SpringCloud中网关的实现包括两种:

  • Gateway
  • zuul

Zuul是基于Servlet的实现,属于阻塞式编程。而SpringCloudGateway则是基于Spring5中提供的WebFlux,属于响应式编程的实现,具备更好的性能。

搭建网关

1、引入依赖

网关模块pom:

<!--nacos服务注册发现依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--网关gateway依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency>

2、编写路由配置以及nacos地址

server:port: 10010
logging:level:cn.itcast: debugpattern:dateformat: MM-dd HH:mm:ss:SSS
spring:application:name: gatewaycloud:nacos:server-addr: nacos:8848 # nacos地址gateway:routes:- id: user-service # 路由标示,必须唯一uri: lb://userservice # 路由的目标地址predicates: # 路由断言,判断请求是否符合规则- Path=/user/** # 路径断言,判断路径是否是以/user开头,如果是则符合- id: order-serviceuri: lb://orderservicepredicates:- Path=/order/**default-filters: #过滤器,处理请求或响应- AddRequestHeader=Truth,Itcast is freaking awesome!

路由断言工厂(Route Predicate Factory)

我们在配置文件中写的断言规则只是字符串,这些字符串会被 Predicate Factory读取并处理,转变为路由判断的条件。
例如Path=/user/**是按照路径匹配,这个规则是由
org.springframework.cloud.gateway.handler.predicate.PathRoutePredicateFactory类来处理的。

在这里插入图片描述

路由过滤器(GatewayFliter)

网关过滤器,对进入网关的请求和微服务返回的响应做处理。

作用:对路由的请求或响应做加工处理,比如添加请求头配置在路由下的过滤器。
在这里插入图片描述

spring:cloud:gateway:routes:filters: #给单独微服务添加过滤器,只对当前路由的请求生效- AddRequestHeader=Truth,Itcast is freaking awesome!

全局过滤器(GlobalFilter)

全局过滤器的作用也是处理一切进入网关的请求和微服务响应,与GatewayFilter的作用一样。

区别在于GatewayFilter通过配置定义,处理逻辑是固定的。

Globalfiter的逻辑需要自己写代码实现,定义方式是实现GlobalFilter接口。

在这里插入图片描述

@Component
public class AuthorizeFilter implements GlobalFilter, Ordered {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {// 1.获取请求参数ServerHttpRequest request = exchange.getRequest();MultiValueMap<String, String> params = request.getQueryParams();// 2.获取参数中的 authorization 参数String auth = params.getFirst("authorization");// 3.判断参数值是否等于 adminif ("admin".equals(auth)) {// 4.是,放行return chain.filter(exchange);}// 5.否,拦截// 5.1.设置状态码,给用户合适的报错exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);// 5.2.拦截请求return exchange.getResponse().setComplete();}@Overridepublic int getOrder() {//设置过滤优先级,数值越大优先级越低return -1;}
}

在以上代码中,使用getOrder()方法设置过了优先级,除此之外,还可以在该类声明上使用@Order(-1)注解规定优先级。

过滤器执行顺序

所有过滤器都来自于GatewayFilter,因此得以进行排序。

路由过滤器和defaultFilter的order由Spring指定,默认是按照声明顺序从1递增

在这里插入图片描述

跨域

跨域问题:浏览器禁止请求的发起者与服务端发生跨域ajax请求,请求被浏览器拦截的问题

通过CORS方案,让浏览器询问服务器,判断是否可以进行跨域。

spring:cloud:gateway:globalcors: # 全局的跨域处理add-to-simple-url-handler-mapping: true # 解决options请求被拦截问题corsConfigurations:'[/**]':allowedOrigins: # 允许哪些网站的跨域请求- "http://localhost:8090"- "http://www.leyou.com"allowedMethods: # 允许的跨域ajax的请求方式- "GET"- "POST"- "DELETE"- "PUT"- "OPTIONS"allowedHeaders: "*" # 允许在请求中携带的头信息allowCredentials: true # 是否允许携带cookiemaxAge: 360000 # 这次跨域检测的有效期
http://www.yayakq.cn/news/298503/

相关文章:

  • v6厂高仿手表网站成都画册设计的公司
  • 市住房和城乡建设局网站大连金宝贝早教中心网页界面设计
  • 外链推广网站网站建设需求统计表
  • 做网站最好用的软件网站设计制作费
  • 郑州 手机网站js网站文字重叠
  • 太原推广型网站开发个人备案网站
  • 网站建设有前途吗网站维护工作内容有什么
  • 英文营销型网站建设网站建设营销的公司
  • 江苏聚峰建设集团网站网站建设常州麦策电商
  • 镇平微网站开发公司视频宣传片
  • 清洁公司网站建设手机网站建设推荐乐云seo
  • h5网站建设是什么意思wordpress秀恩爱
  • 诚信企业品牌网站建设海港区网站快排seo
  • 网站关键词优化系统大连网站制作机构
  • 东莞网站优化教程wordpress获取帖子标签
  • 建设网站页面抖音代运营朋友圈宣传文案
  • 安康网站建设公司价格廊坊做网站1766534168
  • 青岛建网站的公司wordpress获取自定义字段的值
  • flash网站设计师重庆百度
  • 宜兴淘宝网站建设深圳网站专业制作
  • 数字化文化馆网站建设分享网站制作
  • 网站建设用户画像例子深圳做网站建设的哪家效果好又便宜
  • 成立网站要多少钱网站外链有什么用
  • 山东城市建设职业学院教务网站ai时代模版价格
  • 亿唐网不做网站做品牌wordpress去掉边栏
  • 龙华网站建设全包视频网站点击链接怎么做
  • 外贸建站龙泉市建设局网站
  • 建设无障碍网站怎么让网站栏目页收录
  • 传奇网站制作网青海农业网站建设公司
  • 网站建设犀牛邯郸大网站