Nacos SDK for Scala 发布
脱胎于历经阿里巴巴 10 年生产验证的内部产品,支持具有数百万服务的大规模场景,Nacos 作为高性能的动态服务发现、配置管理和服务管理平台从 2018 年开源以来,版本迭代速度很快,已经发布到 1.2.1,已支持企业使用 Nacos 生产高可用。Nacos 社区一直持续投入多语言建设,目前支持主流微服务开发语言及主流服务框架和配置管理框架。
本文作者是 Nacos contributor 杨景,他在 2019 对公司产品进行微服务改造时选择了 Nacos,独立开发了 Nacos SDK for Scala。
欢迎各位感兴趣的开发者参与 Nacos 社区共建:
GitHub:https://github.com/alibaba/nacos
概述: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 作为统一的配置管理和服务发现机制。
- HOCON:使用 HOCON 文件格式的 JVM 语言配置库。
- Akka:一个用于构建高并发、分布式和弹性消息驱动的 Java 和 Scala 应用程序的工具包。可以更轻松地构建强大的反应式、并发和分布式应用程序。
- Akka Discovery:可以使用不同技术提供的服务发现。它允许委托端点查找,这样可以根据环境的不同,通过配置文件以外的其他方式来配置服务。
- Play:基于一个轻量级、无状态、Web友好的架构,以便使用 Java 和 Scala 轻松构建Web应用程序。Play 基于 Akka 构建,为高可扩展的应用程序提供了可预测和最小的资源消耗(CPU、内存、线程)。
- Play-WS:Play 框架实现的异步 HTTP 客户端。
背景
作者是一个 12 年的开发老兵,从 2012 年开始接触并在工作中使用 Scala。经历过纯 Scala 的业务开发,也经历过纯 Java/Spring 的业务开发, 也用 Scala 写过 Spring 应用。使用 Scala 写 Spring 有些问题,在单个服务里混用 Java 和 Scala 两种语言造成不懂 Scala 的开发人员难以接手维护, 而且也造成代码理解和维护困难……。后来,随着微服务的兴起,各服务之间通过接口调用,服务内部实现细节被隐藏起来。作者就在思考是否可以将某些服务使用 Scala 开发并和 Java/Spring 的服务相互配合。
再后来在网上发现了阿里开发的 Nacos,对其作了短暂调研后将其引入作为我们的配置管理和服务发现机制。Nacos 的如下优点很吸引我们:
- 中文社区:学习和问题解决更方便
- 可单独使用:纯 Scala 应用也可以使用
- 支持 Spring Cloud:团队里大部分成员都有 Spring 开发经验
这样,在 2019 对公司产品进行微服务改造时就选择了 Nacos,并将消息、任务调度、文件、日志等工具性质的服务使用 Scala/Akka 实现,其余业务服务继续 使用 Spring。Spring 与 Scala 服务之间通过 gRPC 相互调用,文件服务因需要向公网提供接口,使用 Akka HTTP 提供了 RESTful 服务 (有兴趣的读者可以参阅作者翻译的 Akka HTTP 中文文档)。
(使用了 Nacos 的微服务架构概图)
对于很多 Scala 爱好者,若公司主要使用 Spring 进行业务开发,恰好又使用 Nacos 作为配置管理与服务发现工具。那你可以使用此 SDK 将使用 Scala 实现的服务接入公司的 Spring 生态里。
快速上手
依赖
要在项目中使用,请添加以下依赖:
libraryDependencies += "me.yangbajing.nacos4s" %% "nacos-client-scala" % "1.2.1"
并添加以下依赖源:
resolvers += Resolver.bintrayRepo("helloscala", "maven")
编程使用
Nacos4sNamingService import yangbajing.nacos4s.client.naming.Nacos4sNamingService import yangbajing.nacos4s.client.util.Nacos4s object NamingDemo extends App { val namingService: Nacos4sNamingService = Nacos4s.namingService("127.0.0.0:8848", "") val status = namingService.getServerStatus assert(status == "UP") } Nacos4sConfigService import yangbajing.nacos4s.client.config.Nacos4sConfigService import yangbajing.nacos4s.client.util.Nacos4s object ConfigDemo extends App { val configService: Nacos4sConfigService = Nacos4s.configService("127.0.0.0:8848", "") val status = configService.getServerStatus assert(status == "UP") }
HOCON 配置
Nacos4s 支持使用 HOCON 作为配置文件。application.conf :
nacos4s.client { naming { serverAddr = "127.0.0.1:8848" namespace = "" autoRegisterInstance = on # true serviceName = "me.yangbajing.nacos4s" ip = "127.0.0.1" port = 9999 } config { serverAddr = "127.0.0.1:8848" namespace = "" } }
代码
val configService = Nacos4s.configService(ConfigFactory.load().getConfig("nacos4s.client.config")) val namingService = Nacos4s.namingService(ConfigFactory.load().getConfig("nacos4s.client.config"))
服务自动注册
在使用配置初始化 Nacos4sNamingService 时设置 autoRegisterInstance = on 可自动将服务注册到 Nacos。
完整文档请访问:Nacos SDK for Scala
源码在:https://github.com/yangbajing/nacos-sdk-scala
关于作者
杨景,熟悉 Java、Scala/Akka,熟悉并发编程,了解 Spring 应用框架,擅长分布式软件和大数据应用开发,对领域驱动设计与反应式系统设计有一定认识。在公司产品进行微服务改造过程中选用了 Nacos 并向社区贡献 nacos-sdk-scala 客户端以便提供 Scala 生态支持。大家可以在我的个人博客或知乎专栏上与我交流:
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
绝了!Dataway让Spring Boot不在需要Controller、Service、DAO、Mapper
Dataway介绍 Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具。使得使用者无需开发任何代码就配置一个满足需求的接口。 整个接口配置、测试、冒烟、发布。一站式都通过 Dataway 提供的 UI 界面完成。UI 会以 Jar 包方式提供并集成到应用中并和应用共享同一个 http 端口,应用无需单独为 Dataway 开辟新的管理端口。 这种内嵌集成方式模式的优点是,可以使得大部分老项目都可以在无侵入的情况下直接应用 Dataway。进而改进老项目的迭代效率,大大减少企业项目研发成本。 Dataway 工具化的提供 DataQL 配置能力。这种研发模式的变革使得,相当多的需求开发场景只需要配置即可完成交付。 从而避免了从数据存取到前端接口之间的一系列开发任务,例如:Mapper、BO、VO、DO、DAO、Service、Controller 统统不在需要。 Dataway 是 Hasor 生态中的一员,因此在 Spring 中使用 Dataway 首先要做的就是打通两个生态。根据官方文档中推荐的方式我们将 Hasor 和 Spring Boot 整合起...
- 下一篇
4月21日云栖号头条:阿里云未来3年再投2000亿,用于云操作系统、服务器、芯片等
云栖号:https://yqh.aliyun.com第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策! 今日最新云头条快讯: 阿里云:未来3年再投2000亿,用于云操作系统、服务器、芯片等 阿里云宣布未来3年再投2000亿,用于云操作系统、服务器、芯片、网络等重大核心技术研发攻坚和面向未来的数据中心建设。阿里云智能总裁张建锋表示:“我们对未来有信心,对数字经济有信心。云智能是阿里巴巴的核心战略之一,我们已经坚持投了11年,不会因为疫情而减少投入,反而要加大投入。未来三年,阿里云再投2000亿,用来搞新技术、新基建。” 临港新片区新基建规划:探索国际互联网访问监管模式 《中国(上海)自由贸易试验区临港新片区通信基础设施专项规划(2020-2025)》正式发布。《专项规划》提出,要在临港新片区研究探索国际互联网访问监管模式,构建跨境数据流通安全评估体系,逐步建立对企业的数据备案和白名单管理机制,以企业为单位开展白名单认证直接接入国际互联网,对不同类别的企业和互联网应用数据采用不同等级的管理措施,并加强事中事后监管,在安全的前提下促进数据跨境...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8安装Docker,最新的服务器搭配容器使用
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS7设置SWAP分区,小内存服务器的救世主