dubbo 02 | nguyên mã học tập - phục vụ tuyên bố trung tâm lưu trình chải vuốt

Official website phục vụ tuyên bố sơ đồ, trong đó bao hàm mấy cái mấu chốt loại, văn trung sẽ đề cập đến.

图片

Official website phục vụ tuyên bố chủ yếu lưu trình

Từ một cái đơn giản nhất ví dụ bắt đầu

Thông thường tuyên bố phục vụ chúng ta yêu cầu chỉ định như sau tin tức

  • Đăng ký trung tâm tin tức

  • Phục vụ tiếp lời loại hình

  • Phục vụ thực hiện loại hình

  • Phục vụ phiên bản

  • Mặt khác phối trí tin tức

Từ cái này đơn giản ví dụ có thể thấy đượcPhục vụ đạo ra nhập khẩu ServiceConfig.export(),Kế tiếp tìm hiểu nguồn gốc, từ ServiceConfig.export() bắt đầu giải đọc phục vụ tuyên bố đại thể lưu trình.

ServiceConfig<DemoService> serviceConfig = new ServiceConfig<>();

serviceConfig.setRegistry(new RegistryConfig( "127.0.0.1:2181" ));
serviceConfig.setApplication(new ApplicationConfig( "dubbo" ));
serviceConfig.setInterface(DemoService.class);
serviceConfig.setRef(new DemoServiceImpl());
serviceConfig.setVersion( "1.0" );

serviceConfig.export();

Phục vụ tuyên bố nguyên mã giải đọc

1. Hay không lùi lại tuyên bố

Nếu yêu cầu lùi lại ScheduledExecutorService shedule tiến hành lùi lại tuyên bố;

Nếu không bình thường tuyên bố

2. Thêm tái đăng ký trung tâm tin tức

Một cái phục vụ có thể bị đăng ký đến nhiều phục vụ trung tâm, mỗi cái đăng ký trung tâm đối ứng một cái Invoker yêu cầu biến lịch sở hữu đăng ký trung tâm, tiến hành đăng ký phục vụ.

3. Sở hữu tham số phong giả dạng làm URL

Dubbo trung sở hữu mở rộng điểm tham số đều bao hàm URL tham số, URL làm trên dưới văn tin tức xỏ xuyên qua toàn bộ mở rộng điểm thiết kế hệ thống

4. Phục vụ tuyên bố Scope

- scope = none, không đạo ra phục vụ
- scope!= remote, đạo ra đến bản địa
- scope!= local, đạo ra đến viễn trình

5. Đăng ký trung tâm đăng ký or ip thẳng liền phương thức

Giống nhau thực tế ứng dụng khi đều sẽ sử dụng đăng ký trung tâm, nhưng khai phá hoặc là dạy học khi vì đơn giản sẽ dùng ip thẳng liền phương thức.
Chúng ta trọng điểm giảng đăng ký trung tâm đăng ký phương thức.

Chúng ta yêu cầu tuần hoàn biến lịch sở hữu đăng ký trung tâm URL, đem phục vụ hướng các đăng ký trung tâm tuyên bố.
Một cái đăng ký trung tâm URL đối ứng một cái Invoker, cái này Invoker ProxyFactory
Sinh thành đối ứng đại lý đối tượng, chấp hành thực tế nghiệp vụ logic.

Cuối cùng sẽ thuyên chuyểnProtocol.export

图片

6. Protocol

Protocol là một cái SPI tiếp lời, cam chịu sử dụng DubboProtoco

Này openServer phương pháp chân chính mở ra cảng, từ openServer phương pháp có thể thấy được, đối ứng Server sẽ dùng một cái Map hoãn tồn lên, này Key là url.getAddress, cũng chính là cùng cái ip: port, nói cách khác cùng cái máy móc bất đồng phục vụ IO là nhiều lộ phục dùng ( cam chịu sử dụng NettyServer).

图片

Protocol

图片

DubboProtocol

图片

openServer

7. createServer

Phía trước openServer phương pháp thông suốt quá createServer () mở ra NettyServer ( cam chịu dùng netty thông tín, cũng có thể là MinaServer chờ, nơi này vì phương tiện miêu tả )

Exchangers.bind(url, requestHandler);Trung requestHandler đối ứng thỉnh cầu xử lý ( bao hàm TCP liên tiếp tương quan hồi điều đình lý )

reply, received, connected, disconnected, invoke. Cụ thể xử lý chi tiết kế tiếp thâm nhập học tập.

Có điểm có thể khẳng định xử lý nghiệp vụ thỉnh cầu cuối cùng tìm được đối ứng Invoker, thông qua Invoker bên trong sẽ chân chính thuyên chuyển cụ thể thực hiện loại logic.

图片

ExchangeServer server;
try {
server = Exchangers.bind(url, requestHandler);
} catch (RemotingException e) {
throw new RpcException( "Fail to start server(url:" + url + ")" + e.getMessage(), e);
}

图片

Số liệu là như thế nào đăng ký đến đăng ký trung tâm

Ngươi có lẽ nghi hoặc mặt trên số hiệu không có nhìn đến đem phục vụ tin tức viết nhập đăng ký trung tâm. Kỳ thật tương quan logic ở RegistryProtocol.

RegistryProtocol cũng thực hiệnProtocol tiếp lời,Đồng thời nó còn có một cái thuộc tínhProtocol protocol;Này còn không phải là Dubbo SPI wrapper cơ chế, cũng chính là AOP ( mặt sau bổ sung Dubbo SPI tri thức )

Chúng ta nhìn xem RegistryProtocol#export mấu chốt số hiệu, đây là đem phục vụ tin tức đăng ký đến đăng ký trung tâm

registry.subscribe(overrideSubscribeUrl, overrideSubscribeListener);

Chúng ta thông thường sử dụng Zookeeper, bổn văn lấy ZookeeperRegistry vì lệ tiếp tục phân tích.

图片

ZookeeperRegistry

doRegister(URL url) thông suốt quá zkClient đem tin tức viết nhập đến zookeeper trung. Rốt cuộc đem trung tâm tuyên bố lưu trình xâu lên tới

public void doRegister(URL url) {
try {
zkClient.create(toUrlPath(url), url.getParameter(DYNAMIC_KEY, true));
} catch (Throwable e) {
throw new RpcException( "Failed to register" + url + "to zookeeper" + getUrl() + ", cause:" + e.getMessage(), e);
}
}

Tổng kết

Bổn văn chủ yếu chải vuốt phục vụ tuyên bố trung tâm lưu trình, cùng với mấu chốt số hiệu, trong đó mấu chốt Dubbo SPI Wrap cơ chế, bộ phận người đọc khả năng vô pháp đem đăng ký trung tâm xâu lên tới. Này chỉ là bắt đầu, mặt sau tiếp tục thâm nhập phục vụ thuyên chuyển xử lý từ từ.

Bình luận
Tăng thêm bao lì xì

Thỉnh điền bao lì xì chúc phúc ngữ hoặc tiêu đề

Cái

Bao lì xì cái số nhỏ nhất vì 10 cái

Nguyên

Bao lì xì kim ngạch thấp nhất 5 nguyên

Trước mặt ngạch trống3.43Nguyên Đi trước nạp phí >
Cần chi trả:10.00Nguyên
Thành tựu một trăm triệu kỹ thuật người!
Lĩnh sau ngươi sẽ tự động trở thành bác chủ cùng bao lì xì chủ fans Quy tắc
hope_wisdom
Phát ra bao lì xì
Thật phóNguyên
Sử dụng ngạch trống chi trả
Điểm đánh một lần nữa thu hoạch
Quét mã chi trả
Tiền bao ngạch trống 0

Để khấu thuyết minh:

1. Ngạch trống là tiền bao nạp phí giả thuyết tiền, dựa theo 1:1 tỉ lệ tiến hành chi trả kim ngạch để khấu.
2. Ngạch trống vô pháp trực tiếp mua sắm download, có thể mua sắm VIP, trả phí chuyên mục cập chương trình học.

Ngạch trống nạp phí