首页
首页 教程 派聪明
  • 首页
  • 教程
  • 派聪明
  • 登录
登录技术派畅享更多权益

用户名密码登录

其他登录:
icon_GitHubCreated with sketchtool.
绑定星球,畅享VIP服务

微信扫码/长按识别登录

输入验证码
有效期五分钟 👉 手动刷新

登录即同意 用户协议 和 隐私政策

绑定二哥编程星球,畅享 VIP 尊享服务!

戳我了解如何获取星球编号,新窗口打开

添加二哥微信 itwanger 审核更快

记得备注 星球编号
我会根据星球编号进行审核
1
Nacos 的安装和配置
更新时间: 2025年01月15日
星球
2
整合Nacos服务注册和配置
更新时间: 2024年12月16日
星球
3
整合 Gateway 网关
更新时间: 2024年12月08日
星球
4
OpenAI如何用来辅助编程?
更新时间: 2024年12月05日
星球
关注公众号
原创
PmHub 整合 Nacos 实现服务微服务注册及配置,全文 6000+字

球友好,欢迎来到 Nacos 这一篇。如果要考试划重点的话,我觉得此篇是重中之重。目前来说,在国内,注册中心和配置中心都是通过 Nacos 来完成的。

所以,学习本篇对实际上手工作(即便不是微服务)有很大的帮助。

前言

我们先来看一个问题,在单体应用中,所有的接口都打包成了一个 jar 包,然后放到服务器上去部署。这个时候,接口都是放在 controller 里面,一个接口要调另外一个接口,需要引入 service,然后通过 service 来调用。(不会AxxController 直接调用BxxController)。

画板

很好理解,对吧?也就是说单体内部如果需要调来调去就需要注入 service。

如果 service 需要调用外部服务呢?

我想有经验的你肯定会说,那还不简单,直接 http 调用呗,写上对方服务的 url,然后发起 post 请求或者 get 请求,等待响应结果就好了呀。比如下面这串代码:

public class BaiduTranslateExample {
    public static void main(String[] args) throws Exception {
        // 请替换为您的AppID和密钥
        String appId = "YOUR_APP_ID";
        String secretKey = "YOUR_SECRET_KEY";

        // 待翻译的文本
        String query = "Hello world";
        // 翻译源语言和目标语言
        String from = "en";
        String to = "zh";

        // 随机数salt
        String salt = String.valueOf(new Random().nextInt(10000));
        // 签名计算: sign = MD5(appid+q+salt+密钥)
        String sign = md5(appId + query + salt + secretKey);

        // 构造参数
        String params = "q=" + URLEncoder.encode(query, StandardCharsets.UTF_8)
                + "&from=" + from
                + "&to=" + to
                + "&appid=" + appId
                + "&salt=" + salt
                + "&sign=" + sign;

        // Baidu翻译API地址
        String url = "https://fanyi-api.baidu.com/api/trans/vip/translate";

        // 使用HttpClient发送POST请求
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(url))
                .header("Content-Type", "application/x-www-form-urlencoded")
                .POST(HttpRequest.BodyPublishers.ofString(params))
                .build();

        // 发送请求并获取响应
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

        // 解析返回的JSON数据
        if (response.statusCode() == 200) {
            JSONObject json = new JSONObject(response.body());
            if (json.has("trans_result")) {
                // 提取翻译结果
                String result = json.getJSONArray("trans_result").getJSONObject(0).getString("dst");
                System.out.println("翻译结果: " + result);
            } else {
                System.out.println("翻译失败: " + response.body());
            }
        } else {
            System.out.println("请求失败,HTTP状态码: " + response.statusCode());
        }
    }

注意,这里的 URL 需要写死。

那假设哪天百度翻译改了 URL 地址(虽然不大可能),我们是不是还得修改代码?那你可能要说,做成配置呀。

大哥,改个配置相当麻烦。(尤其是大厂,改线上配置的流程贼繁琐)

这是调用外部服务的例子, 假设调用的服务就是我们系统内部的,是个微服务,服务名变了,服务的 URL 也变了,有没有不用改代码和配置的办法呢?

当然有,那就是通过注册中心来完成。

什么是注册中心呢?

你可以这样理解,注册中心就好比是整个微服务体系中服务的通讯录,****它记录了服务和服务地址的映射关系。

Nacos 的核心功能之一就是可以用来充当注册中心。

Nacos 的第二核心能力呢?

就是起到分布式配置中心的作用。很好理解,原先在本地 application.yml 中的配置,通通都可以放到 Nacos 配置中心去,改个配置,不用重启服务,妈妈再也不用担心我服务重启了,多省事呀。

好了,我花了大量篇幅来给你说明白两个事:

1、在分布式系统中,注册中心很有必要,而 Nacos 就是系统中服务的通讯录

2、Nacos 还可以充当微服务的配置中心。

那下面进入正篇。

什么是 Nacos?

不知道你有没有和我一样的癖好,看到一个名字,总喜欢去思考名字背后的故事和意义。

就好比 PmHub,我们就赋予了他不一样的寓意和故事,感兴趣的可以自行在之前的文章中了解哈。

Nacos 有什么寓意呢?

Nacos: Dynamic Naming and Configuration Service

翻译过来就是:动态命名和配置服务

前四个字母分别为 Naming 和 Configuration 的前两个字母,最后的 s 为 Service

不难理解,对应的其两大核心功能:服务注册和配置。

Nacos 是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。这是他的官网:https://nacos.io/

很有科技感的背景,可以说是国产之光了。

用一句话总结下:Nacos 就是注册中心+配置中心的组合。

额外补充一点知识,不同注册中心的比较,这里苍何做了下总结:

服务注册与发现框架CAP模型控制台管理社区活跃度
EurekaAP支持低 (2.x版本闭源)
ZookeeperCP不支持中
Consul

已加入二哥编程星球,即刻绑定星球编号解锁🔐

该文档仅「二哥编程星球」的VIP用户可见

二哥的编程星球内容包括:

1. 付费文档: 技术派、MYDB 等项目配套的 120+篇教程查看权限

2. 面试指南: 校招、社招的 40 万+字面试求职攻略

3. 智能助手: 无限期使用派聪明 AI 助手,已对接讯飞星火和 ChatGPT双通道,不用花 1 分钱

4. 专属问答: 向二哥 1v1 发起提问,内容不限于 offer 选择、学习路线、职业规划等

5. 简历修改: 提供简历修改服务,附赠星球 100+优质简历模板可供参考

6. 学习环境: 打造一个沉浸式的学习环境,有一种高考冲刺、大学考研的氛围


二哥的星球

》步骤①:微信扫描上方二维码,点击「加入知识星球」按钮

》步骤②:访问星球置顶帖球友必看: https://t.zsxq.com/11rEo9Pdu,获取项目配套文档的语雀访问地址和密码

已加入星球,绑定星球编号
删除提醒

确定删除《PmHub 整合 Nacos 实现服务微服务注册及配置,全文 6000+字》吗

3人已点赞

1 条评论

要记得常笑哦 2024年12月21日 14:35
1111
点赞
回复 取消回复
回复