本文介紹如何使用EDAS-SDK快速開發HSF應用,完成服務注冊與發現。
前提條件
下載Demo工程
您可以按照本文步驟一步步搭建工程,也可以直接下載本文對應的示例工程,或者使用Git下載git clone https://github.com/aliyun/alibabacloud-microservice-demo.git。
該項目包含了眾多示例工程,本文對應的示例工程位于alibabacloud-microservice-demo/microservice-doc-demo/hsf-ali-tomcat,包含itemcenter-api,itemcenter和detail三個Maven工程文件夾。
- itemcenter-api:提供接口定義。
- itemcenter:服務提供者。
- detail:消費者服務。
定義服務接口
HSF服務基于接口實現,當接口定義完成后,生產者將使用該接口實現具體的服務,消費者也基于此接口訂閱服務。
com.alibaba.edas.carshop.itemcenter.ItemService
。public interface ItemService {
public Item getItemById(long id);
public Item getItemByName(String name);
}
該服務接口將提供兩個方法:getItemById與getItemByName。
開發服務提供者
開發服務消費者
- Spring的配置文件使用標簽
<hsf:consumer/>
定義好一個Bean。 - 在使用的時候從Spring的context中將Bean取出來。
本地運行服務
完成代碼、接口開發和服務配置后,在Eclipse或IDEA中,可直接以Ali-Tomcat運行該服務(具體請參見安裝及開發環境配置)。
在開發環境配置時,有一些額外JVM啟動參數來改變HSF的行為,具體如下:
屬性 | 描述 |
---|---|
-Dhsf.server.port | 指定HSF的啟動服務綁定端口,默認值為12200。 |
-Dhsf.serializer | 指定HSF的序列化方式,默認值為hessian。 |
-Dhsf.server.max.poolsize | 指定HSF的服務端最大線程池大小,默認值為720。 |
-Dhsf.server.min.poolsize | 指定HSF的服務端最小線程池大小。默認值為50。 |
-DHSF_SERVER_PUB_HOST | 指定對外暴露的IP,如果不配置,使用 -Dhsf.server.ip的值。 |
-DHSF_SERVER_PUB_PORT | 指定對外暴露的端口,該端口必須在本機被監聽,并對外開放了訪問授權,默認使用 -Dhsf.server.port的配置,如果 -Dhsf.server.port沒有配置,默認使用12200。 |
本地查詢HSF服務
在開發調試的過程中,如果您的服務是通過輕量級注冊配置中心進行服務注冊與發現,就可以通過EDAS控制臺查詢某個應用提供或調用的服務。
- 進入
http://192.168.xx.xx:8080/
。 - 在左側菜單欄,單擊服務列表,輸入服務名、服務組名或者IP地址進行搜索,查看對應的服務提供者以及服務調用者。
說明 配置中心啟動之后默認選擇第一塊網卡地址做為服務發現的地址,如果開發者所在的機器有多塊網卡的情況,可設置啟動腳本中的SERVER_IP變量進行顯式的地址綁定。
常見查詢案例
- 提供者列表頁
- 在搜索框中輸入IP地址,單擊搜索,即可查詢該IP地址的物理機所提供的服務。
- 在搜索框中輸入服務名或服務分組,即可查詢提供該服務的IP地址。
- 調用者列表頁
- 在搜索框中輸入IP地址,單擊搜索,即可查詢該IP地址的物理機所調用的服務。
- 在搜索框中輸入服務名或服務分組,即可查詢調用該服務的IP地址。
部署到EDAS
本地使用輕量級配置及注冊中心的應用可以直接部署到EDAS中,無需做任何修改,注冊中心會被自動替換為EDAS上的注冊中心。
正常打包出可供EDAS-Container運行的WAR包,需要添加如下的Maven打包插件。
應用運行時環境需要選擇EDAS-Container。
具體部署操作詳情請參見在ECS集群中部署應用和在K8s集群中使用鏡像部署Java微服務應用。