nacos负载均衡搭建

nacos介绍

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现配置管理服务管理平台。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

nacos安装下载

Nacos 1.X 是老版本,将来会停止维护。 建议您使用2.X版本。 请移步到 Nacos2.X相关文档.您可以在Nacos的release notes博客中找到每个版本支持的功能的介绍,当前推荐的稳定版本为2.2.3。

从github.com上面拉去相关版本,我这边使用2.3.1

不同系统使用命令不一样

Linux/Unix/Mac
启动命令(standalone代表着单机模式运行,非集群模式):

sh startup.sh -m standalone

如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:

bash startup.sh -m standalone
Windows
启动命令(standalone代表着单机模式运行,非集群模式):

startup.cmd -m standalone

我这边是Windows10,安装成功后直接进入nacos文件目录

打开系统控制命令输入 startup.cmd  -m  standalone,启动命令(standalone代表着单机模式运行,非集群模式)

nacos服务启动成功

接下来是nacos项目搭建

nacos服务注册/发现

1.jdk版本jdk1.8,springboot2.7.x

2.spring工具构建项目

记得jdk使用1.8不要忘记了。我这边已经安装过了,仅展示用

3.版本选择

勾选springboot2.7.x版本,自己根据情况选择。直接不用添加组件直接进入工作空间,提高开发效率。

这里我搭建了三个服务,一个消费者服务,两个服务提供者,方便后续实现负载均衡使用。构建的方式跟父项目差不多,只是子项目在module中构建其他步骤都一样,这里不详细介绍了。

4.springcloud官网

https://spring.io/projects/spring-cloud

5.spriingcloud alibaba

选择左侧springcloud alibaba,进入依赖管理页面,自行翻译成中文。

6.依赖管理

添加对应依赖管理

<dependencyManagement>

<dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2021.0.4.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies>

</dependencyManagement>

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.3</version>
        <relativePath/>
    </parent>

7.服务构建

新建子模块,这里我就不重复讲了,操作都基本一致。新建spring-cloud-nacos9001,spring-cloud-provider9002,spring-cloud-consumer8001三个服务(模块)

添加相关依赖到父项目上

8.配置文件application.yml

分别给两个服务提供者一个消费服务添加配置文件

#服务端口
server:
  port: 9001
#spring配置
spring:
  application:
    name: nacos-provider
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
#端点暴露
management:
  endpoints:
    web:
      exposure:
        include=*:
server:
  port: 9002
spring:
  application:
    name: nacos-provider
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
#端点暴露
management:
  endpoints:
    web:
      exposure:
        include=*:
server:
  port: 8001
spring:
  application:
    name: spring-cloud-consumer
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

#端点暴露
management:
  endpoints:
    web:
      exposure:
        include=*:

# 消费者将要去访问的微服务名称(注册成功的Nacos的微服务提供者)
service-url:
  nacos-user-service: http://nacos-provider

9.启动类注解

每个子服务主程序类添加注解@EnableDiscoveryClient

10.nacos服务业务

服务端业务逻辑代码

11.访问服务

消费服务访问,服务提供者业务逻辑

远程服务访问ribbon负载均衡

它是一个基于HTTP和TCP客户端负载均衡器。它虽然只是一个工具类库,它却是每一个微服务的基础设施。因为实际上,对于服务间调用、API网关请求转发都需要经过Ribbon负载均衡来实现。总体来说,Ribbon的主要作用是:从注册服务器端拿到对应服务列表后以负载均衡的方式访问对应服务。要注意的是Nacos已经整合了Ribbon,所以我们想要使用只需要导入Spring Cloud Alibaba Nacos的依赖就可以直接使用了。

启动项目

1.启动三个服务前必须要保证已nacos启动成功才能生效

启动失败

我这里启动项目过程中,服务提供者都成功启动了,消费服务启动失败,报警了,原因是没有添加RestTemplate依赖导致报错。嵌入异常使用负载均衡使用通过RestTemplate获取api失败找不到对应服务,我这边是忘记添加RestTemplate相关依赖导致异常

<!--https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-loadbalancer-->

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-loadbalancer</artifactId>

<version>3.1.1</version>

</dependency>

启动服务

依赖添加好后还需要添加最关键一步,主程序添加bean依赖。进入消费者服务添加业务逻辑。

@Bean
@LoadBalanced
public RestTemplate restTemplate(){
    return new RestTemplate();
}

restTemplate.getForObject(arg1,arg2,arg3...);

ribbon负载均衡调用

使用RestTemplate对象,通过该对象调用getForObject方法实现ribbon负载均衡.getForObject(arg1,arg2,arg3...)

第一个参数:第一个参数url表示被调用的目标Rest接口位置

    1. url的第一部分是在Nacos中注册的服务提供者名称,如果多个服务提供者注册相同名称,Ribbon会自动寻找其中一个服务提供者,并且调用接口方法。这个就是负载均衡功能。
    2. url后半部是控制器的请求路径。

第二个参数:返回值类型

JavaBean类型或者JavaBean数组类型,如果控制器返回的是List集合,需要使用数组类型接收。

如文中String.class

第三个参数:

是传递给url的动态参数,使用参数时候需要在url上需要使用{1}、{2}、{3}进行参数占位,这样传递的参数就会自动替换占位符。

测试结果

http://localhost:8001/consumer8001

  • 43
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了实现Nacos的集群搭建,我们需要采取以下步骤: 1. 首先,确保你已经下载了Nacos的版本,你可以从GitHub上选择任意版本进行下载。 2. 在搭建集群之前,我们需要将Nacos的默认数据库Derby切换成MySQL。首先启动本机的MySQL,然后创建一个名为nacos_config的数据库。在nacos_config数据库下执行nacos-mysql.sql脚本,这个脚本会创建必要的表结构和数据。 3. 修改Nacos的配置文件,指定MySQL数据库作为数据存储。在Nacos的配置文件中,主要修改以下几个配置项: - spring.datasource.platform=mysql:指定使用MySQL数据库。 - spring.datasource.url:设置MySQL数据库的连接URL。 - spring.datasource.username和spring.datasource.password:配置MySQL数据库的用户名和密码。 4. 配置Nacos节点的集群信息。在Nacos的配置文件中,设置以下配置项: - nacos.cluster.enabled=true:启用集群模式。 - nacos.cluster.servers:设置集群中所有Nacos节点的IP地址和端口号,格式为ip1:port1,ip2:port2,ip3:port3。集群中的节点数量需要大于等于3个。 5. 配置负载均衡。为了实现负载均衡,我们可以使用Nginx来做反向代理。在Nginx的配置文件中,添加类似以下的配置项: ``` upstream nacos_servers { server ip1:port1; server ip2:port2; server ip3:port3; } server { listen 80; server_name your_domain; location / { proxy_pass http://nacos_servers; } } ``` 这样,当访问your_domain时,Nginx会将请求转发到集群中的Nacos节点。 6. 启动Nacos节点。在每个Nacos节点的服务器上,使用命令行或者脚本启动Nacos服务。 7. 检查集群状态。访问任意一个Nacos节点的管理界面,查看集群状态是否正常。 通过以上步骤,你就可以成功搭建Nacos的集群了。记得根据实际情况修改配置文件中的IP地址、端口号和域名。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Nacos集群的搭建过程详解](https://blog.csdn.net/weixin_48016395/article/details/123911131)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [nacos集群搭建详细教程](https://blog.csdn.net/qq_51277752/article/details/125744997)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值