類似SpringCloud的vlingo平臺是一套事件驅動的微服務工具
使用開源(OSS)vlingo/platform實現分散式,併發,被動,事件驅動和微服務架構的簡化。與領域驅動設計一起,這是商業戰略和現代技術相遇的十字路口。這意味著當您構建有界上下文時,vlingo/platform不會妨礙您。相反,vlingo/platform有助於您的核心業務模型的明確和流暢的語言表達。結合簡化的多核支援,您的團隊將獲得一個功能強大的工具箱,其中包含支援創新的多功能元件。
vlingo/actors
1973年,Carl Hewitt博士及其同事制定了Actor模型。近年來,物件導向的發明者Alan Kay表示,Actor模型更多地保留了他認為的重要物件思想。
vlingo/actors工具包是Actor模型的實現。Actor模型背後的思想是強大的。該工具包在設計上是型別安全的,並且服務於特定於領域的介面定義和實現:
工作原理:
- actor在其郵箱中接收訊息,並線上程可用時處理一條訊息。
- 從根本上說,actor是非阻擋的,與外界沒有任何可變的狀態,甚至與其他actor也沒有。
- actor使用可用的執行緒,並且您不能同時執行比可用核心更多的執行緒,例如Runtime.getRuntime().availableProcessors()
- 計算的基本單位透過actor表達。Actor非同步傳送和接收訊息。
- 當物件建立其他物件時,actor可以建立其他actor。
- 每個actor都可以指定它將為其接收的下一條訊息展示的行為。使用vlingo / actors,這可以透過實現多個型別安全的域特定介面的actor來完成。
vlingo/cluster
vlingo / cluster是一個關鍵元件,位於vlingo / actors之上,支援可伸縮和容錯工具和應用程式的開發。構建vlingo /平臺的其他工具幾乎總是構建在vlingo / cluster之上。此外,您將在群集中實施和部署服務/應用程式。
除了可擴充套件的容錯之外,vlingo / cluster還提供了群集範圍的同步屬性。這使群集能夠在所有節點之間共享實時和變異操作狀態。
如果三個節點中的一個丟失,群集仍將保持法定人數並保持健康。但是,如果兩個節點丟失且只有一個節點仍處於執行狀態,則仲裁將丟失,並且群集將被視為執行狀況不佳。在那種情況下,剩餘的一個節點將進入空閒狀態並等待一個或多個其他節點返回到活動操作。當發生這種情況時,群集將再次構成法定人數並達到健康狀態。雖然許多服務/應用程式叢集只需要三個節點以實現最佳使用,但叢集可以支援遠超過三個節點。然而,由於我們平臺的效能和效率,您可能很少需要很多節點。由於我們的效率標準,即使是9節點,21節點或49節點叢集也可能被認為是相當大的。
vlingo/http
vlingo / http元件支援在vlingo / cluster和vlingo / actors上執行的反應性,可伸縮和彈性HTTP伺服器以及RESTful服務。因此,該元件不是獨立執行的,而是在基於微服務的Bounded Context中提供非常輕量級和高效能的HTTP支援。
雖然這並不表明您的服務應該主要基於REST,但使用者介面甚至事件流的分發基於REST是很常見的。vlingo / http元件可以快速,簡單地將您帶到那裡。只需瀏覽一下REST請求對映到Java物件即可理解這一點。
只需幾行請求對映和目標處理程式原始碼,您就可以完全基於DDD泛在語言獲得高效能的RESTful服務設計。
action.user.register.method = POST action.user.register.uri = /users action.user.register.to = register(body:sample.user.UserData userData) action.user.contact.method = PATCH action.user.contact.uri = /users/{userId}/contact action.user.contact.to = changeContact(String userId, body:sample.user.ContactData contactData) |
程式碼:
public class UserResource extends ResourceHandler { public void register(final UserData userData) { final User user = User.from( Name.from(userData.nameData.given, userData.nameData.family), Contact.from(userData.contactData.emailAddress, userData.contactData.telephoneNumber)); repository.save(user); completes().with(Response.of(Created, headers(of(Location, userLocation(user.id))), serialized(UserData.from(user)))); } public void changeContact(final String userId, final ContactData contactData) { final User user = repository.userOf(userId); if (user.doesNotExist()) { completes().with(Response.of(NotFound, userLocation(userId))); return; } final User changedUser = user.withContact(new Contact(contactData.emailAddress, contactData.telephoneNumber)); repository.save(changedUser); completes().with(Response.of(Ok, serialized(UserData.from(changedUser)))); } } |
vlingo/directory
件支援服務註冊和發現。當一個新的Bounded Context(作為微服務實現)啟動時,它會將自己註冊到vlingo/directory。
因此,其他有界上下文將發現他們必須與之合作的服務。當vlingo/directory在企業周圍廣播註冊詳細資訊(包括主機和埠)時,會發生這種情況。
vlingo/auth
為vlingo / platform的各種元件提供安全性。
它支援以下身份驗證和授權概念:租戶,具有Profiles的使用者,組,具有許可權和約束的角色。也可能由您建立的任何服務/應用程式使用,但您的組織並不要求將其用作安全標準。
點選標題進入Github
相關文章
- 事件驅動的微服務-事件驅動設計事件微服務
- 微服務事件驅動架構演進微服務事件架構
- 事件驅動的微服務-建立第三方庫事件微服務
- 使用Spring Cloud Stream和RabbitMQ實現事件驅動的微服務SpringCloudMQ事件微服務
- 如何在Java中實現事件驅動的微服務架構Java事件微服務架構
- 基於事件溯源與CDC的事件驅動微服務架構案例原始碼事件微服務架構原始碼
- carlo:類似Electron.js的谷歌平臺JS谷歌
- 事件驅動架構在 vivo 內容平臺的實踐事件架構
- axon框架創始人談微服務與事件驅動框架微服務事件
- 使用Spring Cloud Stream和Spring State Machine建立事件驅動的微服務案例SpringCloudMac事件微服務
- 領域驅動設計,中臺與微服務微服務
- 基於kubernetes平臺微服務的部署微服務
- SpringCloud微服務的那點事SpringGCCloud微服務
- 結合領域事件和微服務的實現領域驅動設計 - Alagarsamy事件微服務
- 如何設計基於事件驅動架構的銷售庫存微服務?- Jasbir事件架構微服務
- 驅動Driver-platform平臺驅動Platform
- springCloud學習5(Spring-Cloud-Stream事件驅動)SpringGCCloud事件
- 【分散式微服務企業快速架構】SpringCloud分散式、微服務、雲架構快速開發平臺分散式微服務架構SpringGCCloud
- 使用Apache Kafka實現從單體到事件驅動微服務 - swlhApacheKafka事件微服務
- 微服務治理平臺的RPC方案實現微服務RPC
- SpringCloud微服務治理SpringGCCloud微服務
- SpringCloud微服務帶來的問題SpringGCCloud微服務
- SpringCloud包含的微服務介紹--EurekaSpringGCCloud微服務
- RocketMQ 事件驅動:雲時代的事件驅動有啥不同?MQ事件
- SpringCloud企業分散式微服務雲架構快速開發平臺原始碼SpringGCCloud分散式微服務架構原始碼
- 使用ELK構建微服務的日誌平臺微服務
- 【linux】驅動-7-平臺裝置驅動Linux
- SpringCloud——Eureka-微服務的註冊中心SpringGCCloud微服務
- SpringCloud微服務基礎SpringGCCloud微服務
- SpringCloud微服務整合DubboSpringGCCloud微服務
- SpringCloud微服務理解(一)SpringGCCloud微服務
- springcloud 微服務面試SpringGCCloud微服務面試
- 開發類似鬥魚虎牙的運營級直播平臺多少錢
- Spring IO 2019大會上Axon+Spring的事件驅動微服務和CQRS原始碼專案Spring事件微服務原始碼
- 下一代ETL工具:微服務架構的全新資料整合平臺微服務架構
- JNPF.java前後端分離框架,SpringBoot+SpringCloud開發微服務平臺Java後端框架Spring BootGCCloud微服務
- Redis 中的事件驅動模型Redis事件模型
- 基於surging的木舟平臺如何構建起微服務微服務