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

桂林分销网站开发做logo网站的公司

桂林分销网站开发,做logo网站的公司,虚拟主机网站怎么上传文件,网站建设亇金手指专业【微服务学习笔记#xff08;一#xff09;】Nacos、Feign、Gateway基础使用 总览Nacos安装配置Nacos注册中心服务多级存储模型负载均衡规则环境隔离 配置管理配置拉取配置热更新多服务共享配置 Feign远程调用配置性能优化Fegin使用 统一网关Gateway搭建网关路由断言工厂一】Nacos、Feign、Gateway基础使用 总览Nacos安装配置Nacos注册中心服务多级存储模型负载均衡规则环境隔离 配置管理配置拉取配置热更新多服务共享配置 Feign远程调用配置性能优化Fegin使用 统一网关Gateway搭建网关路由断言工厂Route Predicate Factory路由过滤器GatewayFliter全局过滤器GlobalFilter 过滤器执行顺序跨域 本篇内容为学习笔记学习链接为SpringCloudRabbitMQDockerRedis搜索分布式系统详解springcloud微服务技术栈课 课程资料链接可在视频下方找到此处不粘贴而以下的代码都是资料中有的只不过做为记录单独粘贴做为学习使用的参考步骤。 总览 微服务中需要用到的内容 服务网关、 服务集群、 注册中心、配置中心、消息队列在和数据库连接过程中则用到分布式缓存、分布式搜索还需要的额外服务为分布式日志、系统监控链路追踪。 在以上的完成后使用Jenkins完成自动化编译的过程由Docker打包成镜像。 各个内容中所需的技术 微服务注册发现 EurekaNacosConsul 服务远程调用 OpenFeginDubbo 服务链路监控 ZipkinSleuth 统一配置管理 SpringCloudConfigNacos 统一网关路由 SpringCloudGatewayZuul 流量监控、降级、保护 HystixSentinel Nacos Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 安装配置 Nacos文档链接 可以参考文档下载Nacos。 Windows启动命令(standalone代表着单机模式运行非集群模式): startup.cmd -m standalone打开nacos - bin目录中使用cmd启动输入以上命令点击生成的地址即可进入Nacos页面。 使用 项目中 父工程pom文件 dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion2.2.5.RELEASE/versiontypepom/typescopeimport/scope /dependency子工程pom文件 !-- nacos客户端依赖包 -- dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId /dependency客户端子配置文件application.yml中 spring:application:name: userServicecloud:nacos:server-addr: localhost:8848Nacos注册中心 服务多级存储模型 一级为服务、二级为集群、三级为实例。 项目中采用配置 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配置管理依赖--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId/dependencyresouces中新建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客户端依赖--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId/dependencyEnableFeignClients自动装配开关 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依赖--dependencygroupIdio.github.openfeign/groupIdartifactIdfeign-httpclient/artifactId/dependency客户端配置 feign:httpclient:enabled: true # 支持HttpClient的开关max-connections: 200 # 最大连接数max-connections-per-route: 50 # 单个路径的最大连接数方法二日志级别尽量不使用basic或none Fegin使用 统一网关Gateway 网关功能: 身份认证和权限校验服务路由、负载均衡请求限流 在SpringCloud中网关的实现包括两种: Gatewayzuul Zuul是基于Servlet的实现属于阻塞式编程。而SpringCloudGateway则是基于Spring5中提供的WebFlux属于响应式编程的实现具备更好的性能。 搭建网关 1、引入依赖 网关模块pom !--nacos服务注册发现依赖--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependency!--网关gateway依赖--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactId/dependency2、编写路由配置以及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: #过滤器处理请求或响应- AddRequestHeaderTruth,Itcast is freaking awesome!路由断言工厂Route Predicate Factory 我们在配置文件中写的断言规则只是字符串这些字符串会被 Predicate Factory读取并处理转变为路由判断的条件。 例如Path/user/**是按照路径匹配这个规则是由 org.springframework.cloud.gateway.handler.predicate.PathRoutePredicateFactory类来处理的。 路由过滤器GatewayFliter 网关过滤器对进入网关的请求和微服务返回的响应做处理。 作用对路由的请求或响应做加工处理比如添加请求头配置在路由下的过滤器。 spring:cloud:gateway:routes:filters: #给单独微服务添加过滤器只对当前路由的请求生效- AddRequestHeaderTruth,Itcast is freaking awesome!全局过滤器GlobalFilter 全局过滤器的作用也是处理一切进入网关的请求和微服务响应与GatewayFilter的作用一样。 区别在于GatewayFilter通过配置定义处理逻辑是固定的。 而Globalfiter的逻辑需要自己写代码实现定义方式是实现GlobalFilter接口。 Component public class AuthorizeFilter implements GlobalFilter, Ordered {Overridepublic MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) {// 1.获取请求参数ServerHttpRequest request exchange.getRequest();MultiValueMapString, 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.comallowedMethods: # 允许的跨域ajax的请求方式- GET- POST- DELETE- PUT- OPTIONSallowedHeaders: * # 允许在请求中携带的头信息allowCredentials: true # 是否允许携带cookiemaxAge: 360000 # 这次跨域检测的有效期
http://www.hkea.cn/news/14367972/

相关文章:

  • 建一个门户网站多少钱wordpress插件文件
  • 微信 网站 织梦修改wordpress登录页面
  • 手表网站素材网站建设模板犀牛云
  • 建设网站详细流程图推广方案流程
  • 什么做网站的公司好广西钦州住房与城乡建设局网站
  • 贵州城乡建设部网站首页营销型网站建设与网盟
  • 做网站属于什么职位免费影视logo在线设计
  • 怎么做一元抢购网站品牌策划设计包括哪些内容
  • 杭州上城区网站建设旅游产品设计方案
  • 绍兴市高速公路建设指挥部网站产品开发流程梳理
  • 湖州做网站公司哪家好网站加载速度影响因素
  • 网站成功案例怎么做网络营销是传销吗
  • 黑人与白人做爰网站优化网站关键词优化
  • 素材下载网站wordpress 本地运行
  • 个人网站页面设计素材顺德网站设计制作
  • 长春网站建设 信赖吉网传媒徐州做网站的培训机构
  • 做外贸需要自己建网站吗便宜高端网站设计推荐
  • 深圳响应式设计企业网站哪个网站系统做的好
  • 动易网站 sql2005做生意必定红火的公司名字
  • 好的免费移动网站建设平台有哪些青海兴远建设工程有限公司网站
  • aws 建网站城乡建设网站投稿
  • 那些网站可以做宣传second是什么意思
  • 网站搭建教学网什么软件可以做企业网站
  • 做网站伊犁哈萨克自治州企业网站优化托管
  • 创建一个网站要钱吗鱼鱼cms
  • 网站建设与管理复习知识点动漫网页设计报告
  • 企业网站可以自己做吗长春高档网站建设
  • 网站设计团队介绍当地自己的淘宝网站怎么做
  • 做企业网站 排名企业网站建设论文
  • 建设企业网站的郑州网络公司现状