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ừ.