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

2017做那些网站致富天天做网站

2017做那些网站致富,天天做网站,静态展示类网站,wampserver和wordpress1.Nacos配置管理 1.1.将配置交给Nacos管理的步骤 1.在Nacos中添加配置 Data Id服务名称-环境名称.yaml eg#xff1a;userservice-dev.yaml 2.引入nacos-config依赖 在user-service服务中#xff0c;引入nacos-config的客户端依赖 !--nacos配置管理依赖-- dep…1.Nacos配置管理 1.1.将配置交给Nacos管理的步骤 1.在Nacos中添加配置 Data Id服务名称-环境名称.yaml eguserservice-dev.yaml 2.引入nacos-config依赖 在user-service服务中引入nacos-config的客户端依赖 !--nacos配置管理依赖-- dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId /dependency3.添加bootstrap.yaml我们这里以显示一个日期时间为例 在user-service中添加一个bootstrap.yaml文件 spring:application:name: userservice # 服务名称profiles:active: dev #开发环境这里是dev cloud:nacos:server-addr: localhost:8848 # Nacos地址config:file-extension: yaml # 文件后缀名4.编写controller Value(${pattern.dateformat})private String dateformat;GetMapping(/now)public String now(){return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));}1.2.配置自动刷新 方式一 给Value注入的变量所在类上添加注解RefreshScope Slf4j RestController RequestMapping(/user) RefreshScope public class UserController { }方式二 使用ConfigurationProperties注解代替Value注解。 在user-service服务中添加一个类读取patterrn.dateformat属性 package cn.itcast.user.config;import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;Component Data ConfigurationProperties(prefix pattern) public class PatternProperties {private String dateformat; }在UserController中使用这个类代替Value Autowiredprivate PatternProperties properties; GetMapping(/now)public String now(){return LocalDateTime.now().format(DateTimeFormatter.ofPattern(properties.getDateformat()));}1.3.配置共享 服务名.yml没有环境比如userservice.yml 这个里面配置的就是多环境共享配置 优先级服务名环境名.yml 服务名.yml 本地配置 1.4.配置Nacos集群 下载资源nacos集群搭建 2.Feign 2.1.配置FEign远程调用替代RestTemplate 代替RestTemplate实现http的优雅请求 1.在消费者的pom文件中引入依赖 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId /dependency2.在消费者启动类上加上EnableFeignClients 3.编写Feign客户端 package cn.itcast.order.client;import cn.itcast.order.pojo.User; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable;FeignClient(userservice) public interface UserClient {GetMapping(/user/{id})User findById(PathVariable(id) Long id); }4.调用 Autowiredprivate OrderMapper orderMapper;User user userClient.findById(order.getUserId());2.2.自定义配置Feign覆盖springboot自动装配的配置 类型作用说明feign.Logger.Level修改日志级别包含四种不同的级别NONE、BASIC、HEADERS、FULLfeign.codec.Decoder响应结果的解析器http远程调用的结果做解析例如解析json字符串为java对象feign.codec.Encoder请求参数编码将请求参数编码便于通过http请求发送feign. Contract支持的注解格式默认是SpringMVC的注解feign. Retryer失败重试机制请求失败的重试机制默认是没有不过会使用Ribbon的重试 日志的级别分为四种 NONE不记录任何日志信息这是默认值。BASIC仅记录请求的方法URL以及响应状态码和执行时间HEADERS在BASIC的基础上额外记录了请求和响应的头信息FULL记录所有请求和响应的明细包括头信息、请求体、元数据。 2.2.1.配置文件配置 基于配置文件修改feign的日志级别可以针对单个服务 feign: client:config: userservice: # 针对某个微服务的配置loggerLevel: FULL # 日志级别 也可以针对所有服务 feign: client:config: default: # 这里用default就是全局配置如果是写服务名称则是针对某个微服务的配置loggerLevel: FULL # 日志级别 2.2.2.Java代码配置 基于Java代码来修改日志级别先声明一个类然后声明一个Logger.Level的对象 public class DefaultFeignConfiguration {Beanpublic Logger.Level feignLogLevel(){return Logger.Level.BASIC; // 日志级别为BASIC} }如果要全局生效将其放到启动类的EnableFeignClients这个注解中 EnableFeignClients(defaultConfiguration DefaultFeignConfiguration .class) 如果是局部生效则把它放到对应的FeignClient这个注解中 FeignClient(value userservice, configuration DefaultFeignConfiguration .class) 2.3.Feign的性能优化 1.日志级别尽量使用basic 2.使用HttpClient或OKHttp代替URLConnection默认使用的是URLConnection没有连接池 2.3.1.使用HttpClient 1.消费者pom文件引入依赖 !--httpClient的依赖 -- dependencygroupIdio.github.openfeign/groupIdartifactIdfeign-httpclient/artifactId /dependency2.在消费者的yml文件中配置连接池 feign:client:config:default: # default全局的配置loggerLevel: BASIC # 日志级别BASIC就是基本的请求和响应信息httpclient:enabled: true # 开启feign对HttpClient的支持max-connections: 200 # 最大的连接数max-connections-per-route: 50 # 每个路径的最大连接数2.4.Feign最佳实践一个相对来说比较好的实现方案 2.4.1.继承方式 一样的代码可以通过继承来共享 1定义一个API接口利用定义方法并基于SpringMVC注解做声明。 2Feign客户端和Controller都集成改接口 缺点 服务提供方、服务消费方紧耦合 参数列表中的注解映射并不会继承因此Controller中必须再次声明方法、参数列表、注解 2.4.1.抽取方式 将Feign的Client抽取为独立模块并且把接口有关的POJO、默认的Feign配置都放到这个模块中提供给所有消费者使用。 例如将UserClient、User、Feign的默认配置都抽取到一个feign-api包中所有微服务引用该依赖包即可直接使用。 1.创建feign-apimodel在feign-api中引入feign的starter依赖 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId /dependency2.order-service中编写的UserClient、User、DefaultFeignConfiguration都复制到feign-api项目中 3.在order-service中使用feign-api 首先删除order-service中的UserClient、User、DefaultFeignConfiguration等类或接口。 在order-service的pom文件中中引入feign-api的依赖 dependencygroupIdcn.itcast.demo/groupIdartifactIdfeign-api/artifactIdversion1.0/version /dependency修改order-service中的所有与上述三个组件有关的导包部分改成导入feign-api中的包 4.解决包扫描问题 4.1.指定Feign应该扫描的包 EnableFeignClients(basePackages cn.itcast.feign.clients)4.2.指定需要加载的FeignClient接口 EnableFeignClients(clients {UserClient.class})3.统一网关Gateway 3.1.网关介绍 网关作用 身份认证、权限校验、请求路由到微服务负载均衡请求限流 在SpringCloud中网关的实现包括两种Gateway基于Spring5中的WebFlux属于响应式编程的实现具备更好的性能。zuul基于Servlet的实现属于阻塞式编程。 3.2.gateway快速入门 1.引入nacos的发现依赖和gateway网关依赖 !--网关-- dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactId /dependency !--nacos服务发现依赖-- dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId /dependency2.编写启动类 3.编写基础配置和路由服务 server:port: 10010 # 网关端口 spring:application:name: gateway # 服务名称cloud:nacos:server-addr: localhost:8848 # nacos地址gateway:routes: # 网关路由配置- id: user-service # 路由id自定义只要唯一即可# uri: http://127.0.0.1:8081 # 路由的目标地址 http就是固定地址uri: lb://userservice # 路由的目标地址 lb就是负载均衡后面跟服务名称predicates: # 路由断言也就是判断请求是否符合路由规则的条件- Path/user/** # 这个是按照路径匹配只要以/user/开头就符合要求路由配置包括 路由id路由的唯一标示路由目标uri路由的目标地址http代表固定地址lb代表根据服务名负载均衡路由断言predicates判断路由的规则路由过滤器filters对请求或响应做处理 4.测试 访问http://localhost:10010/user/1复合/user/**规则请求转发到http://userservice/user/1 3.3.断言工厂 predicates的配置会被Predicate Factory读取并处理转变为路由判断的条件 例如Path/user/**是按照路径匹配这个规则是由 org.springframework.cloud.gateway.handler.predicate.PathRoutePredicateFactory类来 处理的像这样的断言工厂在SpringCloudGateway还有十几个: 名称说明示例After是某个时间点后的请求- After2037-01-20T17:42:47.789-07:00[America/Denver]Before是某个时间点之前的请求- Before2031-04-13T15:14:47.43308:00[Asia/Shanghai]Between是某两个时间点之前的请求- Between2037-01-20T17:42:47.789-07:00[America/Denver], 2037-01-21T17:42:47.789-07:00[America/Denver]Cookie请求必须包含某些cookie- Cookiechocolate, ch.pHeader请求必须包含某些header- HeaderX-Request-Id, \dHost请求必须是访问某个host域名- Host.somehost.org,.anotherhost.orgMethod请求方式必须是指定方式- MethodGET,POSTPath请求路径必须符合指定规则- Path/red/{segment},/blue/**Query请求参数必须包含指定参数- Queryname, Jack或者- QuerynameRemoteAddr请求者的ip必须是指定范围- RemoteAddr192.168.1.1/24Weight权重处理 我们只需要掌握Path这种路由工程就可以了。 3.4.过滤器工厂 可以对进入网关的请求和响应进行处理 3.4.1.路由过滤器的种类 Spring提供了31种不同的路由过滤器工厂。例如 名称说明AddRequestHeader给当前请求添加一个请求头RemoveRequestHeader移除请求中的一个请求头AddResponseHeader给响应结果中添加一个响应头RemoveResponseHeader从响应结果中移除有一个响应头RequestRateLimiter限制请求的流量 3.4.2.请求头过滤器 下面我们以AddRequestHeader 为例来讲解。 需求给所有进入userservice的请求添加一个请求头Truthitcast is freaking awesome! 只需要修改gateway服务的application.yml文件添加路由过滤即可 spring:cloud:gateway:routes:- id: user-service uri: lb://userservice predicates: - Path/user/** filters: # 过滤器- AddRequestHeaderTruth, Itcast is freaking awesome! # 添加请求头当前过滤器写在userservice路由下因此仅仅对访问userservice的请求有效。 3.4.3.默认过滤器 如果要对所有的路由都生效则可以将过滤器工厂写到default下。格式如下 spring:cloud:gateway:routes:- id: user-service uri: lb://userservice predicates: - Path/user/**default-filters: # 默认过滤项- AddRequestHeaderTruth, Itcast is freaking awesome! 3.4.4.总结 过滤器的作用是什么 ① 对路由的请求或响应做加工处理比如添加请求头 ② 配置在路由下的过滤器只对当前路由的请求生效 default-filters的作用是全局生效 3.5.全局过滤器GlobalFilter 过滤器工厂网关提供了31种但是每一种过滤器的作用都是固定的。全局过滤器就可以实现自己的业务逻辑自己写代码实现。 3.5.1.全局过滤器的使用 定义方式是实现GlobalFilter接口。 public interface GlobalFilter {/*** 处理当前请求有必要的话通过{link GatewayFilterChain}将请求交给下一个过滤器处理** param exchange 请求上下文里面可以获取Request、Response等信息* param chain 用来把请求委托给下一个过滤器 * return {code MonoVoid} 返回标示当前过滤器业务结束*/MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain); }下面的例子实现了判断请求头中是否有参数是否有authorizationadmin 通过两种方式定义过滤器链的顺序数字越小优先级越高 Order(-1)注解代码中注释起来了实现Ordered接口代码中使用的方法 import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.core.Ordered; import org.springframework.http.HttpStatus; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.stereotype.Component; import org.springframework.util.MultiValueMap; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono;Component //Order(-1)//顺序注解定义过滤器的顺序也可以实现Ordered接口 public class AuthorizeFilter implements GlobalFilter , Ordered {Overridepublic MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) {//获取请求参数ServerHttpRequest request exchange.getRequest();MultiValueMapString, String params request.getQueryParams();//获取参数中的authorization参数String auth params.getFirst(authorization);//判断参数值是否等于adminif (admin.equals(auth)) {//是放行return chain.filter(exchange);}//否拦截,设置状态码exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);//结束处理return exchange.getResponse().setComplete();}Overridepublic int getOrder() {return -1;} }3.5.2.过滤器链的执行顺序 每一个过滤器都必须指定一个int类型的order值order值越小优先级越高执行顺序越靠前。GlobalFilter通过实现Ordered接口或者添加Order注解来指定order值由我们自己指定路由过滤器和defaultFilter的order由Spring指定默认是按照声明顺序从1递增。当过滤器的order值一样时会按照 defaultFilter 路由过滤器 GlobalFilter的顺序执行。 3.6.跨域问题 3.6.1.什么是跨域问题 跨域域名不一致就是跨域主要包括 域名不同 www.taobao.com 和 www.taobao.org 和 www.jd.com 和 miaosha.jd.com 域名相同端口不同localhost:8080和localhost8081 跨域问题浏览器禁止请求的发起者与服务端发生跨域ajax请求请求被浏览器拦截的问题 解决方案CORS这个以前应该学习过这里不再赘述了。不知道的小伙伴可以查看https://www.ruanyifeng.com/blog/2016/04/cors.html 3.6.2.解决gateway的跨域问题 spring:cloud:gateway:# 。。。globalcors: # 全局的跨域处理add-to-simple-url-handler-mapping: true # 解决options请求被拦截问题corsConfigurations:[/**]:allowedOrigins: # 允许哪些网站的跨域请求 - http://localhost:8090allowedMethods: # 允许的跨域ajax的请求方式- GET- POST- DELETE- PUT- OPTIONSallowedHeaders: * # 允许在请求中携带的头信息allowCredentials: true # 是否允许携带cookiemaxAge: 360000 # 这次跨域检测的有效期
http://wiki.neutronadmin.com/news/168955/

相关文章:

  • 九江网站推广wordpress视频教程
  • 驻马店专业网站建设Django可以做门户网站吗
  • 如何搭建网站后台技术支持广州网站建设
  • 网站集群建设价格如何注册网上商城
  • 已有域名如何在花生壳网站做二级域名托管网页视频下载慢怎么办
  • 区块链技术做网站网址域名是什么
  • 保亭住房和城乡建设局网站网站建设视频教程免费下载
  • 怎么网站代备案屏蔽 wordpress 插件下载
  • 公司网站建设备选方案评价标准百度网站收录
  • 杭州拱墅区网站建设网站建设与管理实验目的
  • 双语版网站引导页wordpress seo plugin
  • 免费个人网站+上传网络营销方案怎么写
  • 公司做网站app入什么科目有奖竞猜网站建设
  • 大区直播间网站开发制作用logo做ppt模板下载网站
  • 万州网站建设公司站长之家查询网站
  • 贵阳市城乡建设厅网站外贸网站怎么做谷歌搜索
  • 2017网站建设费用个人品牌网站设计
  • 新建的网站百度搜不到外贸在哪个网站做
  • 深圳住房和建设局网站免费设计装修公司
  • 嘉兴云建站模板seo优化搜索引擎网站优化推广网络关键词优化-乐之家网络科技
  • 第二课强登陆网站新型智库建设的意见免费发布信息网站平台
  • 世界知名网站王烨诡异复苏的漫画叫什么
  • 安徽省建设厅网站工程师查询东莞网吧
  • 在国外做网站网站犯法吗哪个网站可以上传设计的作品
  • 网站直播间 是怎么做的企业网站建设方案范文
  • 网站建设 ui设计公司网站活动页面设计
  • 如果有域名和空间怎么做网站中小学网站建设
  • 网站移动端权重怎么做学网站建设需要什么软件有哪些
  • 甘肃永靖建设住建局网站做花生的网站
  • 做网站资讯运营淳安千岛湖建设集团网站