背景
工作以来由于不同项目中的不同业务,我经历过纯 Scala 的业务开发,也经历过纯 Java/Spring 的业务开发,也用 Scala 写过 Spring Cloud 应用。也研究过Scala背后公司Typesafe官方微服务框架Lagom,但始终不尽人意,我一直在寻找可以把Scala开发的应用和 Java/Spring 的服务相互配合的解决方案。
直到有一天我刷博客的时候刷到杨景杨老师的博客
发现了Nacos SDK for Scala,我仿佛发现了新大陆。第一次认识到Nacos,我在了解Nacos SDK for Scala过程中发现,该API主要基于scala 2.12写的,不支持2.11,不然需要改源码,考虑到成本的问题,决定还是使用Nacos Java SDK或者Nacos Open API ,所以本文不过多述说Nacos SDK for Scala,以下是Nacos SDK for Scala简介,有兴趣的可以移步去阅读。
Nacos SDK for Scala简介
Nacos SDK for Scala 是基于 Nacos Java SDK 的封装,使得在 Scala 下更易使用。
支持使用 HOCON 做为配置文件,支持
Akka Discovery 和
Play-WS 。
Nacos SDK for Scala 既可以 将 Nacos 引入 Scala 生态环境,作为微服务应用里的配置管理和服务发现机制。同时,也可以
将 Scala/Akka/Play 引入 Java 以及 Spring 微服务环境,可以让你在微服务开发中混合使用 Java/Spring Cloud、Scala 应用、
Akka 应用和 Play 应用。它们都通过 Nacos 作为统一的配置管理和服务发现机制。
要快速上手请访问: @refQuick Start 。
对于很多 Scala 爱好者,若公司主要使用 Spring 进行业务开发,恰好又使用 Nacos 作为配置管理与服务发现工具。那你可以使用此 SDK 将使用 Scala
实现的服务接入公司的 Spring 生态里。
Nacos简介
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
服务(Service)是 Nacos 世界的一等公民。Nacos 支持几乎所有主流类型的“服务”的发现、配置和管理:
Kubernetes Service
gRPC & Dubbo RPC Service
Spring Cloud RESTful Service
Nacos 的关键特性包括:
- 服务发现和服务健康监测
- 动态配置服务
- 动态 DNS 服务
- 服务及其元数据管理
Nacos的优势
- 中文社区:学习和问题解决更方便
- 可单独使用:纯 Scala 应用也可以使用
- 支持 Spring Cloud:团队里大部分成员都有 Spring 开发经验
Nacos与Eureka注册中心优缺点对比
Nacos
优点:
1)开箱即用,适用于dubbo,spring cloud等
2)AP模型,数据最终一致性
3)注册中心,配置中心二合一,提供控制台管理
4)纯国产,各种有中文文档,久经双十一考验
缺点:
1)刚刚开源不久,社区热度不够,依然存在bug
Eureka:
优点:
1)Spring Cloud 官方推荐
2)AP模型,数据最终一致性
3)开箱即用,具有控制台管理
缺点:
1)客户端注册服务上报所有信息,节点多的情况下,网络,服务端压力过大,且浪费内存
2)客户端更新服务信息通过简单的轮询机制,当服务数量巨大时,服务器压力过大。
3)集群伸缩性不强,服务端集群通过广播式的复制,增加服务器压力
4)Eureka2.0 闭源(Spring Cloud最新版本还是使用的1.X版本的Eureka)
Nacos与apollo配置中心对比
- Nacos部署简化,Nacos整合了注册中心、配置中心功能,且部署相比apollo简单,方便管理和监控。
- apollo容器化较困难,Nacos有官网的镜像可以直接部署,总体来说,Nacos比apollo更符合KISS原则
- 性能方面,Nacos读写tps比apollo稍强一些
Nacos 快速开始
预备环境准备
Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:
- 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
- 64 bit JDK 1.8+;下载 & 配置。
- Maven 3.2.x+;下载 & 配置。
下载源码或者安装包
从 Github 上下载源码方式
git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
ls -al distribution/target/
// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin
下载编译后压缩包方式
您可以从 最新稳定版本 下载 nacos-server-$version.zip
包。
unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
cd nacos/bin
启动服务器
Linux/Unix/Mac
启动命令(standalone代表着单机模式运行,非集群模式):
sh startup.sh -m standalone
如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:
bash startup.sh -m standalone
Windows
启动命令:
cmd startup.cmd
或者双击startup.cmd运行文件。
服务注册&发现和配置管理
服务注册
curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'
服务发现
curl -X GET 'http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName'
发布配置
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld"
获取配置
curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"
关闭服务器
Linux/Unix/Mac
sh shutdown.sh
Windows
cmd shutdown.cmd
或者双击shutdown.cmd运行文件。
参考资料
https://www.yangbajing.me/nacos-sdk-scala/introduction.html
https://nacos.io/zh-cn/docs/sdk.html](https://nacos.io/zh-cn/docs/sdk.html
https://blog.csdn.net/qq1300375795/java/article/details/86700330
https://www.jianshu.com/p/afd7776a64c6
网友评论