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