27寸显示器网站建设,seo营销型网站推广,wordpress支付宝网页支付,怎么制作博客网站Nacos服务搭建
我们首先在Nacos的GitHub中下载相关的安装文件。https://github.com/alibaba/nacos/releases 但是因为服务器在国外#xff0c;所以我们直接给大家提供了对应的安装文件。直接解压缩到非中文的目录下#xff0c;然后启动即可 服务访问的地址是#xff1a;htt…Nacos服务搭建
我们首先在Nacos的GitHub中下载相关的安装文件。https://github.com/alibaba/nacos/releases 但是因为服务器在国外所以我们直接给大家提供了对应的安装文件。直接解压缩到非中文的目录下然后启动即可 服务访问的地址是http://localhost:8848/nacos Nacos服务注册
引入相关的依赖文件 dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependency
放开注册中心:EnableDiscoveryClient
// 放开注册中心
EnableDiscoveryClient
SpringBootApplication
// 指定Mapper接口对应的路径
MapperScan(com.msb.mall.product.dao)
public class MallProducetApplication {public static void main(String[] args) {SpringApplication.run(MallProducetApplication.class, args);}}然后需要在配置问中配置注册中心的相关信息 然后重启服务我们就可以在注册中心中发现对应的服务注册信息了 那么安装相同的步骤完成其他几个微服务的注册 Nacos容器中安装
为了使用的方便我们将Nacos安装到Docker容器中
首先我们需要拉取对应的镜像文件
docker pull nacos/nacos-server:1.4.2通过镜像文件运行nacos容器
docker run -d --env MODEstandalone --name nacos -v /mydata/nacos/conf:/home/nacos/conf -p 8848:8848 nacos/nacos-server:1.4.2安装中如果出现了如下的提示 那么就把windows中的安装文件中的conf目录的文件上传到虚拟机中目前测试下来无论有没有报错都最好把windows的conf下内容上传一下不然可能nacos不能访问 服务启动时间比较长耐心等待一会
启动容器后测试访问
http://192.168.56.100:8848/nacos 默认的账号密码nacos nacos 设置nacos服务自启动
docker update --restartalways nacos然后将众多的微服务的注册中心地址修改为docker容器中的注册中心地址 看到注册信息就表示操作成功了 OpenFegin服务调用
OpenFegin是一个声明式的服务调用组件。本质上是封装的Ribbon实现的。 商品服务定义接口
我们在商品服务中定义一个对外提供功能的接口 订单服务中调用
我们在订单服务中集成OpenFegin完成对应的商品服务调用
引入相关的依赖
dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId/dependency然后创建对应的Fegin接口
/*** FeignClient 指明我们要从注册中心中发现的服务的名称*/
FeignClient(name mall-product)
public interface ProductService {/*** 需要访问的远程方法* return*/GetMapping(/product/brand/all)public R queryAllBrand();
}还需要在启动类中开启远程调用
/*** basePackages 制定Fegin接口的路径*/
EnableFeignClients(basePackages com.msb.mall.order.fegin)
EnableDiscoveryClient
SpringBootApplication
MapperScan(com.msb.mall.order.dao)
public class MallOrderApplication {public static void main(String[] args) {SpringApplication.run(MallOrderApplication.class, args);}}然后在Order的控制期中完成商品服务的调用 AutowiredProductService productService;GetMapping(/products)public R queryProduct(){// OpenFegin 远程调用服务return R.ok().put(products,productService.queryAllBrand());}启动服务报错 然后就把相关的依赖添加上就可以了 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-loadbalancer/artifactId/dependency如果请求的时候发现还报错 在nacos的依赖中需要过滤netflix-ribbon exclusionsexclusiongroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-ribbon/artifactId/exclusion
/exclusions通过RefreshScope来动态的刷新配置数据注解的位置写在Controller中 最后我们通过Value(“#{}”) 来获取配置中心中的数据配置中心的数据优先于application.yml中的属性信息 在对应的命名空间下创建对应的配置文件 默认使用的public命名空间如果要使用特定的命名空间的话我们需要在bootstrap.properties中显示的指定使用的命名空间 然后通过配置分组来区分不同的开发环境【开发环境dev,测试环境test生产环境prod】
也就在具体的命名空间下我们创建的多个环境对应的配置文件 Nacos配置中心
配置中心的基本使用
首先添加对应的依赖,因为其他的微服务也需要向配置中心中获取配置信息所以对应的依赖我们添加在了commons模块中 dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-bootstrap/artifactIdversion3.0.3/version/dependency创建bootsrap.properties文件这个文件会优先于application.yml文件加载
spring.application.namemall-order
spring.cloud.nacos.config.server-addr192.168.56.100:8848在nacos服务中创建对应的数据集名称是应用名称.properties mall-order.properties 命名空间和配置分组
我们在Nacos配置中心中是通过命名空间和配置分组来管理我们众多的配置信息
首先我们通过命名空间来隔离服务给每一个服务创建一个对应的命名空间 如果我们需要加载对应的配置组中的信息那么同样的需要在bootstrap.properties中设置对应的配置组信息 配置拆分
我们现在是将某个服务中的所有的配置都写在了同一个配置文件中。为了方便管理我们可以将配置信息拆分到配置中心中。
我们可以将配置文件中的数据源mybatis的配置信息以及其他的信息拆分开来 然后在bootstrap.properties中的指定
properties
spring.application.namemall-order
spring.cloud.nacos.config.server-addr192.168.56.100:8848
# 指定使用的命名空间
spring.cloud.nacos.config.namespace638a5c2f-488f-4fa4-b7d3-1533d772e715
# 指定对应的配置组
spring.cloud.nacos.config.groupprod# 配置多个配置集
spring.cloud.nacos.config.ext-config[0].data-idmybats.yml
spring.cloud.nacos.config.ext-config[0].groupprod
spring.cloud.nacos.config.ext-config[0].refreshfalsespring.cloud.nacos.config.ext-config[1].data-iddatasourc.yml
spring.cloud.nacos.config.ext-config[1].groupprod
spring.cloud.nacos.config.ext-config[1].refreshfalsespring.cloud.nacos.config.ext-config[2].data-idother.yml
spring.cloud.nacos.config.ext-config[2].groupprod
spring.cloud.nacos.config.ext-config[2].refreshfalse网关Gateway
网关基本介绍 在微服务架构里服务的粒度被进一步细分各个业务服务可以被独立的设计、开发、测试、部署和管理。这时各个独立部署单元可以用不同的开发测试团队维护可以使用不同的编程语言和技术平台进行设计这就要求必须使用一种语言和平台无关的服务协议作为各个单元间的通讯方式。 本系统中我们选择的是Gateway作为我们的网关组件Spring Cloud Gateway是Spring官方基于Spring 5.0Spring Boot 2.0和Project Reactor等技术开发的网关Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。Spring Cloud Gateway作为Spring Cloud生态系中的网关目标是替代ZUUL其不仅提供统一的路由方式并且基于Filter链的方式提供了网关基本的功能例如安全监控/埋点和限流等。 网关有几个非常重要的概念
Route(路由)这是网关的基本构建块它由一个ID一个目标URI一组断言和一组过滤器定义如果断言为真则路由匹配Predicate(断言):是Java8中提供的函数式接口用来判断是否路由匹配的Filter(过滤器):对断言匹配的请求和响应进行修改处理 网关应用
创建网关API服务修改SpringBoot和SpringCloud相关版本和其他的微服务保持一致。
然后添加对应的依赖 dependencygroupIdcom.msb.mall/groupIdartifactIdmall-commons/artifactIdversion0.0.1-SNAPSHOT/version/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactId/dependency因为网关服务路由的时候需要去注册中心中发现相关的服务所以需要完成Nacos注册中心的配置
# 注册中心的配置
spring.application.namemall-gateway
spring.cloud.nacos.discovery.server-addr192.168.56.100:8848# 指定注册中心的服务端口
server.port8070放开注解 同样的网关中的相关配置我们也需要添加到Nacos的配置中心中所以也需要整合Nacos配置中心 然后我们测试路由规则是否可行
spring:application:name: mall-gatewaycloud:nacos:discovery:server-addr: 192.168.56.100:8848gateway:routes: - id: route1uri: http://www.baidu.compredicates:- Queryurl,baidu- id: route2uri: http://www.jd.compredicates: - Queryurl,jd启动时候因为依赖的commons服务中有MyBatis的依赖那么在网关API服务中也需要数据源的相关配置那么没有就抛异常这时我们可以在启动类的SpringBootApplication注解中排除DataSourceAutoConfiguration的自动注入。 然后根据对应的路由规则测试即可
http://localhost:8070/?urlbaidu
http://localhost:8070/?urljd