5.Spring Cloud构建微服务架构(五)Nacos

起因

    之前使用的都是spring cloud的全家桶,Eureka、spring config、spring gateway等组件。为了减少微服务的数量,我们将spring config和Eureka做成了一个服务,既充当服务注册中心,有充当服务配置中心。可是每一次修改完配置文件之后都需要重新启动Eureka来使修改的配置生效,这大大的降低了开发的效率。

​ 注册中心本质是为了解耦服务提供者和服务消费者的。任何一个微服务都应该存在或者支持多个提供者,而提供者的数量和分布是无法预先确定的,因此就需要有一个组件来管理微服务提供者的注册和发现,这个就是注册中心。

CAP理论

  • 一致性(Consistency)
  • 可用性(Availability)
  • 分隔容忍(Partition tolerance)

CAP理论是分布式架构中重要的理论。

一致性就是所有节点在同一时间具有相同的数据,可用性就是保证每个请求不管成功或者失败都有响应,某一个节点挂掉并不会影响整个系统的接受和发出请求,分割容忍就是系统中任意信息的丢失或失败不会影响系统的继续运作。

主流注册中心对比

Nacos Eureka Consul Zookeeper
CAP理论 CP+AP AP CP CP
健康检查 TCP/HTTP/MYSQL/Client Beat Client Beat TCP/HTTP/gRPC/Cmd Keep Alive
负载均衡策略 权重/metadata/Selector Ribbon Fabio -
雪崩保护
自动注销实例 支持 支持 支持 支持
访问协议 HTTP/DNS HTTP HTTP/DNS TCP
监听支持 支持 支持 支持 支持
多数据中心 支持 支持 支持 不支持
跨注册中心同步 支持 不支持 支持 不支持
SpringCloud集成 支持 支持 支持 支持
Dubbo集成 支持 不支持 支持 支持
K8s集成 支持 不支持 支持 不支持

Nacos

Nacos是什么

​ 打开网站 Nacos 的首页,我们可以看到下面的内容,写到 Nacos 是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
5.Spring Cloud构建微服务架构(五)Nacos_第1张图片

Nacos本地搭建

为了方便我们自己开发调试,我们选择通过自己编译源代码来安装Nacos

1.获取源代码

代码仓库地址:https://github.com/alibaba/nacos.git

通过 git clone拉取最新代码到本地

2、使用IDEA打开Nacos项目

5.Spring Cloud构建微服务架构(五)Nacos_第2张图片

3、数据库脚本还原

找到config》resource》META-INF》nacos-db.sql这个数据库脚本是mysql版的脚本,将其还原到数据库服务器上,建立相应的表结构。

4、修改配置

修改console》src》main》resoures》application.properties,填入正确的数据库地址

db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123456
5、编译

使用 mvn -Prelease-nacos -Dmaven.test.skip=true -Drat.skip=true clean install -U命令编译源代码

6、启动设置

设置启动的JVM参数 -Dnacos.standalone=true
5.Spring Cloud构建微服务架构(五)Nacos_第3张图片

7、启动访问

开启Nacos,使用浏览器访问http://127.0.0.1:8848/nacos就可以看到Nacos的网页管理界面了,说明Nacos也开启来了。
5.Spring Cloud构建微服务架构(五)Nacos_第4张图片

Nacos和Spring Cloud整合

1、新建微服务

新建一个微服务,然后把该微服务注册到Nacos上去,并通过Nacos进行微服务的相关配置。

添加依赖



Spring boot 版本

org.springframework.boot
spring-boot-starter-parent
1.5.16.RELEASE

Spring Cloud 版本


    org.springframework.cloud
    spring-cloud-dependencies
    Edgware.SR5
    pom
    import

Spring Alibaba Cloud 版本


    org.springframework.cloud
    spring-cloud-alibaba-dependencies
    0.1.1.RELEASE
    pom
    import

2、配置文件bootstrap.properties

server.port= 38085
spring.application.name=appName
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.discovery.server-addr=106.52.239.153:8848

3、写一个http接口,返回配置文件里的值

@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {

    @Value("${useLocalCache:false}")
    private boolean useLocalCache;

    @RequestMapping("/get")
    public boolean get() {
        return useLocalCache;
    }
}

4、开启应用


开启应用,然后在Nacos的界面里的服务管理下的服务列表可以看到该应用,说明该微服务已经注册到了Nacos。
5.Spring Cloud构建微服务架构(五)Nacos_第5张图片

5、访问接口


访问我们应用的接口
http://localhost:38085/config/get
可以看到应用读取配置文件里的值
file

然后我们修改Nacos配置文件里的值
5.Spring Cloud构建微服务架构(五)Nacos_第6张图片

直接刷新页面发现返回值已经改变

file

欢迎关注我的公众号

5.Spring Cloud构建微服务架构(五)Nacos_第7张图片

本文由博客群发一文多发等运营工具平台 OpenWrite 发布

你可能感兴趣的:(Spring,Cloud,spring,cloud,微服务,架构)