恩平网站建设,网站开发技术最新技术,wordpress cg主题,三亚按下了暂停键本文适合有 Java 基础知识的人群本文作者#xff1a;HelloGitHub-秦人HelloGitHub 推出的《讲解开源项目》系列#xff0c;今天给大家带来一款开源 Java 版可以实现动态服务发现#xff0c;配置和服务管理平台——Nacos#xff0c;它是阿里巴巴团队推出的#xff0c;符合国…本文适合有 Java 基础知识的人群本文作者HelloGitHub-秦人HelloGitHub 推出的《讲解开源项目》系列今天给大家带来一款开源 Java 版可以实现动态服务发现配置和服务管理平台——Nacos它是阿里巴巴团队推出的符合国人的一切使用习惯并且中文文档丰富开源社区也特别活跃。项目源码地址https://github.com/alibaba/nacos一、项目介绍在选择使用一个工具之前我们先大概了解一下它的同类型产品这样更能看出它的价值。提供了一组简单易用的特性集帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。主要特性服务发现支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的 Agent TODO 注册 Service 后服务消费者可以使用 DNS TODO 或 HTTPAPI 查找和发现服务。服务健康监测提供对服务的实时的健康检查阻止向不健康的主机或服务实例发送请求。动态配置服务动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。动态 DNS 服务动态 DNS 服务支持权重路由使用者更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。服务及其元数据管理Nacos 能让使用者从微服务平台建设的视角管理数据中心的所有服务及元数据包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA 以及最首要的 metrics 统计数据。Nacos 生态图二、SpringBoot 实战Nacos 主要的功能有配置中心和注册中心。配置中心通过在 Nacos 上配置用户名在不重启微服务的情况下实现动态获取配置信息功能。注册中心创建两个微服务服务提供者和服务消费者实现微服务间调用。消费者要调用提供者的接口只需要声明提供者的微服务名称和接口的请求地址Nacos 就可准确地找到到对应的接口。2.1 运行 Nacos下载地址https://github.com/alibaba/nacos/releasesunzip nacos-server-$version.zip #解压cd nacos/binstartup.cmd -m standalone #单机模式访问首页Nacos 的访问地址http://localhost:8848/nacos/ 默认账号密码nacos nacos页面截图如下2.2 配置中心创建微服务项目创建 SpringBoot 项目主要有三种方式通过网站创建IntelliJ IDEA 的 Spring Initializr 工具创建Maven 创建项目形式创建。项目的pom 文件内容如下 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.springframework.cloud spring-cloud-starter-alibaba-nacos-discovery 0.9.0.RELEASE bootstrap.yml 配置spring: application: name: nacos-config cloud: nacos: config: server-addr: 127.0.0.1:8848 file-extension: yaml prefix: nacos-config profiles: active: devNacos 配置Nacos 上创建配置文件名称格式${prefix}-${spring.profile.active}.${file-extension}如上一步bootstrap.yml的配置可知我要创建的配置名为nacos-config-dev.yaml内容如下创建 Controller动态获取用户名称的功能为例创建一个对外接口 /username 代码如下RestControllerRefreshScopepublic class ConfigController { Value(${username:wangzg}) private String username; RequestMapping(/username) public String userNameInfo() { return username; }}注意Controller 上要添加 RefreshScope注解 它实现了配置的热加载。验证结果本地运行项目可以看到项目的启动时端口已变为我们在 Nacos 上配置的端口8090。在浏览器访问链接http://localhost:8090/username返回 testuser。修改 Nacos 上 username 的值不需要重启微服务重新请求链接 username 的值会动态变。可见 Nacos 作为配置中心实现了热加载功能。2.3 注册中心创建服务提供者创建微服务可参上面配置中心的创建方式创建对外接口 /sayHello 代码如下RestControllerpublic class ProviderController { GetMapping(/sayHello) public String sayHello(RequestParam(value name,defaultValue helloWord)String sayHello){ return tom say: sayHello; }}启动服务访问地址http://localhost:8099/sayHello可输出tom say: helloWord表示微服务已创建成功。创建服务消费者这里采用 FeignClient 的方式实现跨服务间调用(有兴趣的同学也可以研究一下RestTemplate的方式)。pom 文件在 nacos-consumer 的 pom 文件要添加 Feigin-Client 的 maven 依赖。 org.springframework.cloud spring-cloud-starter-openfeign添加注解在微服务启动类 *Application.java 添加注解 EnableFeignClients。创建 FeignClientFeignClient(nacos-provider)public interface ProviderClient { GetMapping(/sayHello) String sayHello(RequestParam(value name, defaultValue wangzg, required false) String name);}说明FeignClient 注解传入的 name ,指定FeignClient的名称如果项目使用了 Ribbonname 属性会作为微服务的名称用于服务发现。创建 ConsumerControllerRestControllerpublic class ConsumerController { Autowired ProviderClient providerClient; GetMapping(/hi-feign) public String hiFeign(){ return providerClient.sayHello(feign); }}重启工程在浏览器上访问 http://localhost:8090/hi-feign可以在浏览器上展示正确的响应这时 nacos-consumer 调用 nacos-provider 服务成功。下面一张请求流转的时序图这样理解清晰一些。项目地址https://github.com/hellowHuaairen/wangzgSpringBootTest三、最后微服务有四大特点小(微服务粒度小)独(独立部署运行和扩展)轻(系统简洁轻量化)松(高内聚低耦合)要完成一个复杂系统往往需要很多微服务单元而衔接每个微服务完成微服务的统一管理就非常有必要所以集成服务管理中心和配置中心的产品就的就应运而生而 Nacos 是其中的佼佼者教程至此你应该也能对 Nacos 有一些了解光看不练假把式最快的学习方式莫过于模仿再通过举一反三才能融会贯通。每一种新工具都是对老工具的革新有兴趣的小伙伴可以参考我上面的案例在实践中会发现更多乐趣