Skip to content
This repository has been archived by the owner on Jul 16, 2024. It is now read-only.

alibaba/alibaba-rsocket-broker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Repository files navigation

logo

Gitter Maven GitHub repo size Open Issues Build Status Apache License 2

Hạng mục lưu trữ thông tri

Theo Ali nghiệp vụ phát triển cùng kỹ thuật đổi mới thay đổi, alibaba-rsocket-broker hạng mục sẽ tiến hành archive thao tác ( tức lưu trữ kho hàng ). Dự tính lưu trữ thời gian: 2024 năm 7 nguyệt 5 ngày, hạng mục lưu trữ sau, issue, kéo lấy thỉnh cầu, số hiệu, nhãn, quan trọng sự kiện, wiki, phiên bản, đệ trình, đánh dấu, chi nhánh chờ biến thành chỉ đọc trạng thái, hạng mục vẫn cứ có thể fork cùng với tiêu tinh.

Trước mắt xã khu thay thế khai nguyên hạng mục vìhttps://github /reactive-rsocket-broker,Hoan nghênh đại gia tiếp tục sử dụng, cống hiến.

Alibaba RSocket Broker là một khoản căn cứ vào RSocket hiệp nghị đẳng thức ngang nhau thông tin hệ thống, vì thông tin nhiều mặt xây dựng phân bố thức RPC, Pub/Sub, Streaming chờ thông tin duy trì.

  • Đẳng thức: Đừng lo tuyến trình mô hình, toàn dị bước hóa, lưu thức bối áp duy trì, độc đáo ngang nhau thông tin hình thức nhưng thích ứng các loại bên trong internet hoàn cảnh cùng vượt vân hỗn vân nhu cầu.
  • Điều khiển tự động: Hoàn thiện khống chế mặt (Control Plane) duy trì, nhưng định chế cùng phương tiện công năng mở rộng, như duy trì ngược hướng Prometheus Metrics thu thập, ZipKin RSocket Collector, Chaos chờ.
  • Tin tức: Mặt hướng tin tức thông tin, phục vụ lộ từ, lọc, observability đều phi thường đơn giản.
  • Trao đổi hệ thống: Hoàn toàn phân bố thức, dị cấu hệ thống chỉnh hợp đơn giản, vô luận ứng dụng cái gì ngôn ngữ khai phá, bố trí ở nơi nào, đều có thể lẫn nhau thông tin.

Càng nhiều RSocket Broker tài nguyên cùng giới thiệu, thỉnh phỏng vấn dưới tài nguyên:

RSocket Broker công tác nguyên lý

RSocket Broker kiều tiếp ứng dùng gian thông tin hai bên, tương đương với một cái người trung gian nhân vật. Ứng dụng ở khởi động sau, cùng Broker sáng tạo một cái trường liên tiếp, ở liên tiếp sáng tạo thời điểm yêu cầu ghi rõ chính mình thân phận, nếu là phục vụ cung cấp giả, sẽ đăng ký chính mình có thể cung cấp phục vụ tin tức. Broker sẽ nhằm vào sở hữu liên tiếp cùng phục vụ danh sách thành lập đối ứng chiếu rọi quan hệ. Đương một cái ứng dụng yêu cầu thuyên chuyển mặt khác phục vụ khi, ứng dụng sẽ đem thỉnh cầu lấy tin tức phương thức chia Broker, sau đó Broker sẽ phân tích tin tức nguyên tin tức, sau đó căn cứ lộ từ biểu đem thỉnh cầu chuyển phát cấp phục vụ cung cấp giả, sau đó đem xử lý kết quả sau tin tức lại chuyển phát cấp thuyên chuyển phương. Broker hoàn toàn là dị bước hóa, ngươi không cần quan tâm tuyến trình trì này đó khái niệm, hơn nữa tin tức chuyển phát đều là căn cứ vào Zero Copy, cho nên tính năng phi thường cao, đây cũng là vì sao không cần lo lắng trung tâm hóa Broker trở thành tính năng bình cảnh nguyên nhân chủ yếu.

RSocket Broker Structure

Thông qua kể trên giá cấu đồ, RSocket Broker hoàn toàn giải quyết truyền thống thiết kế trung đông đảo vấn đề:

  • Phối trí đẩy đưa: Liên tiếp đã thành lập, chỉ cần thông qua RSocket metadataPush có thể hoàn thành phối trí đẩy đưa
  • Phục vụ đăng ký cùng phát hiện: Ứng dụng cùng Broker thành lập liên tiếp sau, cái này trường liên tiếp chính là phục vụ đăng ký cùng phát hiện, ngươi không cần thêm vào phục vụ đăng ký trung tâm
  • Trong suốt lộ từ: Ứng dụng ở thuyên chuyển phục vụ khi, không cần biết phục vụ đối ứng ứng dụng tin tức, Broker sẽ hoàn thành lộ từ
  • Service-to-service thuyên chuyển: RSocket cung cấp 4 cái mô hình có thể tốt lắm giải quyết phục vụ đến phục vụ thuyên chuyển các loại phức tạp nhu cầu
  • Load balancing: Sở hữu ứng dụng cùng Broker thành lập trường liên tiếp sau, phụ tải cân đối ở broker trung tâm lộ từ biểu hoàn thành, đối ứng dùng hoàn toàn trong suốt.
  • Circuit Breakers: Chặn đường cướp của bảo hộ, hiện tại điều chỉnh vì Back Pressure duy trì, càng gần sát thực tế nghiệp vụ cảnh tượng
  • Distributed messaging: RSocket bản thân chính là căn cứ vào tin tức đẩy đưa, hơn nữa là phân bố thức.
  • Nhiều lời ngôn duy trì: RSocket là một bộ tiêu chuẩn hiệp nghị, chủ lưu ngôn ngữ SDK đều có duy trì, tình hình cụ thể và tỉ mỉ thỉnh phỏng vấnRSocket SDK Stack

Hạng mục mô khối

  • alibaba-rsocket-service-common: RSocket phục vụ tiếp lời định nghĩa cơ sở mô khối, bao gồm Annotation, Reactive tương quan dàn giáo cùng chống đỡ loại
  • alibaba-rsocket-core: RSocket trung tâm công năng mô khối
  • alibaba-rsocket-spring-boot-starter: Spring Boot Starter for RSocket, bao gồm RSocket phục vụ tuyên bố cùng tiêu phí
  • alibaba-broker-spring-boot-starter: Spring Boot Starter for RSocket Broker, phương tiện kẻ thứ ba tiến hành mở rộng
  • alibaba-rsocket-broker: Alibaba RSocket Broker tham khảo thực hiện
  • alibaba-broker-registry-client-spring-boot-starter: Thông qua RSocket Broker đối ngoại cung cấp phục vụ phát hiện phục vụ
  • alibaba-broker-config-client-spring-boot-starter: Thông qua RSocket Broker đối ngoại cung cấp phối trí đẩy đưa phục vụ
  • rsocket-broker-gateway-http: RSocket Broker HTTP võng quan, đem HTTP thay đổi vì RSocket hiệp nghị
  • rsocket-broker-gateway-grpc: RSocket Broker gRPC võng quan, đem gRPC thay đổi vì RSocket hiệp nghị

Khai phá hoàn cảnh yêu cầu

  • JDK 11: RSocket Broker Server căn cứ vào Java 11, nhưng là Broker Client chờ là Java 8 kiêm dung
  • Maven 3.5.x
  • Node 16+: RSocket Broker chọn dùng Vaadin 23.0 phiên bản xây dựng khống chế giao diện, cho nên ngươi yêu cầu trang bị Node 16 trở lên phiên bản

Như thế nào vận hành Example?

Chú ý:Dạng lệ số hiệu trung AccountService tiếp lời chọn dùng Protobuf tiến hành danh sách hóa, sử dụng protobuf-maven-plugin sinh thành đối ứng Protobuf, kiến nghị sử dụng IDE dẫn vào hạng mục phía trước, đầu tiên ở hạng mục căn mục lục hạ chấp hành một chút "mvn -DskipTests package" Hoàn thành Protobuf đối ứng số hiệu sinh thành, bằng không trực tiếp ở IDE trung biên dịch khả năng xuất hiện biên dịch không thông qua tình huống.

Hạng mục cung cấp hoàn thành dạng lệ, ngươi có thể ởexample mô khốiHạ tìm được, bao gồm phục vụ tiếp lời định nghĩa, phục vụ thực hiện cùng phục vụ thuyên chuyển ba cái bộ phận.

Khởi động RSocket Broker
  • JbangPhương thức khởi động: Thông quajbang rsocket-broker@alibaba-rsocket-brokerMệnh lệnh khởi động RSocket Broker
  • Docker Compose vận hành RSocket Broker: Ở RSocket Broker hạng mục mục lục hạ chấp hành 'docker-compose up -d' khởi động RSocket Broke
  • Ở IDE trung vận hành RSocket Broker: Tìm được AlibabaRSocketBrokerServer loại, vận hành main hàm số, khởi động RSocket Broker
Vận hành RSocket Responder & Requester
  • Tìm được RSocketResponderServer loại, vận hành main hàm số, khởi động RSocket Responder đối ngoại cung cấp Reactive phục vụ
  • Tìm được RSocketRequesterApp loại, vận hành main hàm số, khởi động RSocket Requester, tiến hành Reactive Service tiêu phí
  • Ở IDEA trung, tìm được example.http, vận hành "GEThttp://localhost:8181/user/2"Hoặc là vận hành dưới mệnh lệnh, tiến hành phục vụ thuyên chuyển thí nghiệm.
$ curl http://localhost:8181/user/2

Dạng lệ kỹ càng tỉ mỉ giới thiệu thỉnh phỏng vấnExample

RSocket phục vụ biên soạn lưu trình

Bao gồm như thế nào sáng tạo một cái Reactive phục vụ tiếp lời, ở Responder đoan thực hiện nên tiếp lời, ở Requester hoàn thành Reactive phục vụ thuyên chuyển, cùng với thông tin hai bên là như thế nào cùng Broker lẫn nhau.

  • Sáng tạo một cái RSocket phục vụ tiếp lời, ngươi có thể sáng tạo một cái đơn độc Maven Module gửi này đó tiếp lời, như user-service-api, dạng lệ số hiệu như sau:
publicinterfaceUserService{
Mono<User>findById(Integerid);
}
  • Ở RSocket Responder đoan thực hiện nên tiếp lời, đồng thời cấp thực hiện loại tăng thêm @RSocketService annotation, như sau:
@RSocketService(serviceInterface=UserService.class)
@Service
publicclassUserServiceImplimplementsUserService{
@Override
publicMono<User>findById(Integerid) {
returnMono.just(newUser(1,"nick:"+id));
}
}

Không ít khai phá giả sẽ hỏi, nếu là MySQL cơ sở dữ liệu, như thế nào cùng Reactive tổng thể. Trước mắt R2DBC có đối MySQL duy trì, ngươi có thể tham khảo một cái Spring Cloud RSocket + R2DBC + MySQL Demo thực hiện:https://github /linux-china/spring-cloud-function-demo/

  • Ở RSocket Requester, lấy Proxy phương thức sáng tạo Reactive phục vụ tiếp lời đối ứng Spring bean, như sau:
@Bean
public UserService userService(@Autowired UpstreamManager upstreamManager) {
return RSocketRemoteServiceBuilder
.client(UserService.class)
.upstreamManager(upstreamManager)
.build();
}
  • Ở RSocket Requester đoan, tiến hành số hiệu thuyên chuyển, như HTTP REST API cung cấp cấp:
@RestController
publicclassPortalController{
@Autowired
UserServiceuserService;

@GetMapping("/user/{id}")
publicMono<User>user(@PathVariableIntegerid) {
returnuserService.findById(id);
}
}

Dạng lệ hạng mục thỉnh tham khảo:https://github /alibaba-rsocket-broker/rsocket-broker-simple-example

References