Nacos SDK for Scala 发布
脫胎于歷經(jīng)阿里巴巴10年生產(chǎn)驗證的內(nèi)部產(chǎn)品,支持具有數(shù)百萬服務的大規(guī)模場景,Nacos作為高性能的動態(tài)服務發(fā)現(xiàn)、配置管理和服務管理平臺從2018年開源以來,版本迭代速度很快,已經(jīng)發(fā)布到1.2.1,已支持企業(yè)使用Nacos生產(chǎn)高可用。Nacos社區(qū)一直持續(xù)投入多語言建設,目前支持主流微服務開發(fā)語言及主流服務框架和配置管理框架。
本文作者是Nacos contributor楊景,他在 2019 對公司產(chǎn)品進行微服務改造時選擇了 Nacos,獨立開發(fā)了Nacos SDK for Scala。
歡迎各位感興趣的開發(fā)者參與Nacos社區(qū)共建:
GitHub:https://github.com/alibaba/nacos
官網(wǎng):https://nacos.io
概述:Nacos SDK for Scala
Nacos SDK for Scala 是基于 Nacos Java SDK 的封裝,使得在 Scala 下更易使用。 支持使用 HOCON 做為配置文件,支持 Akka Discovery 和 Play-WS 。
Nacos SDK for Scala 既可以 將 Nacos 引入 Scala 生態(tài)環(huán)境,作為微服務應用里的配置管理和服務發(fā)現(xiàn)機制。同時,也可以 將 Scala/Akka/Play 引入 Java 以及 Spring 微服務環(huán)境,可以讓你在微服務開發(fā)中混合使用 Java/Spring Cloud、Scala 應用、 Akka 應用和 Play 應用。它們都通過 Nacos 作為統(tǒng)一的配置管理和服務發(fā)現(xiàn)機制。
HOCON:使用 HOCON 文件格式的 JVM 語言配置庫。
Akka:一個用于構建高并發(fā)、分布式和彈性消息驅(qū)動的 Java 和 Scala 應用程序的工具包??梢愿p松地構建強大的反應式、并發(fā)和分布式應用程序。
Akka Discovery:可以使用不同技術提供的服務發(fā)現(xiàn)。它允許委托端點查找,這樣可以根據(jù)環(huán)境的不同,通過配置文件以外的其他方式來配置服務。
Play:基于一個輕量級、無狀態(tài)、Web友好的架構,以便使用 Java 和 Scala 輕松構建Web應用程序。Play 基于 Akka 構建,為高可擴展的應用程序提供了可預測和最小的資源消耗(CPU、內(nèi)存、線程)。
Play-WS:Play 框架實現(xiàn)的異步 HTTP 客戶端。
背景
作者是一個 12 年的開發(fā)老兵,從 2012 年開始接觸并在工作中使用 Scala。經(jīng)歷過純 Scala 的業(yè)務開發(fā),也經(jīng)歷過純 Java/Spring 的業(yè)務開發(fā), 也用 Scala 寫過 Spring 應用。使用 Scala 寫 Spring 有些問題,在單個服務里混用 Java 和 Scala 兩種語言造成不懂 Scala 的開發(fā)人員難以接手維護, 而且也造成代碼理解和維護困難……。后來,隨著微服務的興起,各服務之間通過接口調(diào)用,服務內(nèi)部實現(xiàn)細節(jié)被隱藏起來。作者就在思考是否可以將某些服務使用 Scala 開發(fā)并和 Java/Spring 的服務相互配合。
再后來在網(wǎng)上發(fā)現(xiàn)了阿里開發(fā)的 Nacos,對其作了短暫調(diào)研后將其引入作為我們的配置管理和服務發(fā)現(xiàn)機制。Nacos 的如下優(yōu)點很吸引我們:
- 中文社區(qū):學習和問題解決更方便
- 可單獨使用:純 Scala 應用也可以使用
- 支持 Spring Cloud:團隊里大部分成員都有 Spring 開發(fā)經(jīng)驗
這樣,在 2019 對公司產(chǎn)品進行微服務改造時就選擇了 Nacos,并將消息、任務調(diào)度、文件、日志等工具性質(zhì)的服務使用 Scala/Akka 實現(xiàn),其余業(yè)務服務繼續(xù) 使用 Spring。Spring 與 Scala 服務之間通過 gRPC 相互調(diào)用,文件服務因需要向公網(wǎng)提供接口,使用 Akka HTTP 提供了 RESTful 服務 (有興趣的讀者可以參閱作者翻譯的?Akka HTTP 中文文檔)。
使用了 Nacos 的微服務架構概圖
對于很多 Scala 愛好者,若公司主要使用 Spring 進行業(yè)務開發(fā),恰好又使用 Nacos 作為配置管理與服務發(fā)現(xiàn)工具。那你可以使用此 SDK 將使用 Scala 實現(xiàn)的服務接入公司的 Spring 生態(tài)里。
快速上手
依賴
要在項目中使用,請?zhí)砑右韵乱蕾?#xff1a;
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.getServerStatusassert(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.getServerStatusassert(status == "UP") }HOCON 配置
Nacos4s 支持使用 HOCON 作為配置文件。application.conf :
nacos4s.client {naming {serverAddr = "127.0.0.1:8848"namespace = ""autoRegisterInstance = on # trueserviceName = "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,熟悉并發(fā)編程,了解Spring應用框架,擅長分布式軟件和大數(shù)據(jù)應用開發(fā),對領域驅(qū)動設計與反應式系統(tǒng)設計有一定認識。在公司產(chǎn)品進行微服務改造過程中選用了 Nacos 并向社區(qū)貢獻 nacos-sdk-scala 客戶端以便提供 Scala 生態(tài)支持。大家可以在我的個人博客或知乎專欄上與我交流:
人個主頁:https://www.yangbajing.me
知乎專欄:https://zhuanlan.zhihu.com/yangbajing
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結
以上是生活随笔為你收集整理的Nacos SDK for Scala 发布的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 轻松搭建基于 SpringBoot +
- 下一篇: 阿里每天究竟要抵御多少攻击