六、安装轻量级配置中心
6.1 环境要求
正确配置环境变量 JAVA_HOME,指向一个1.6或1.6 以上版本的JDK; 8080 和 9600 端口未被使用。
6.2 安装步骤
将实验软件\轻量配置中心目录中edas-config-center.zip软件包,解压本地磁盘(例如:d:\work)目录。
进入 edas-config-center 目录,双击 startup.bat启动轻量配置中心
正常启动。由于默认使用的是8080端口,因此,可以通过如下地址进行访问:
6.3 配置地址
对于需要使用轻量配置中心的开发机器,请在本地 DNS(hosts 文件)中,将jmenv.tbsite.net 域名指向启动了 EDAS 配置中心的机器 IP。hosts 文件的路径如下:
Windows 操作系统:C:\Windows\System32\drivers\etc\hosts Unix 操作系统:/etc/hosts 示例
如果您在 IP 为 192.168.1.100 的机器上面启动了 EDAS 配置中心,则所有开发者只需要在机器的 hosts 文件里加入如下一行即可(记得备份原文件):
192.168.1.100 jmenv.tbsite.net 在本机上部署轻量级配置中心,并让本机的应用访问,配置hosts效果如下图所示:
七、开发RPC接口
7.1 开发步骤
下面的开发示例将以eclipse作为IDE进行示范:
将实验软件\示例代码目录中的edas-app-demo.zip本地磁盘(例如:d:\work)目录,打开eclipse,点击import>Maven>Existing MavenProjects选择刚解压到本地的项目carshop。
新增api,新写一个接口,用来打印名字。在itemcenter-api项目新增接口PrintService。代码如下:
public interface PrintService { public String print(String name); }
八、开发RPC Provider
8.1 开发步骤
接下来要开始rpc provider,通过上述定义的接口完成实现类。如下:
在itemcenter项目新增类PrintServiceImpl实现PrintService接口。代码如下:
public class PrintServiceImpl implements PrintService { @Override public String print(String name) { return name; } }
修改itemcenter项目resources目录下hsf-provider-beans.xml,version用自己的名字+日期。
其中,除了定义hsf的配置hsf:provider以外,还需要将PrintServiceImpl暴露为spring的bean,并提供hsf:provider的ref属性引用。代码如下:
<bean id="printService" class="com.alibaba.edas.carshop.itemcenter.PrintServiceImpl" /> <hsf:provider id="printServiceProvider" interface="com.alibaba.edas.carshop.itemcenter.PrintService" ref="printService" version="zhuizhi.20180809" group="testHSFGroup"> </hsf:provider>
九、开发RPC Consumer
9.1 开发步骤
接下来要开始rpc consumer,通过上述第六节定义的接口,远程调用第七节的接口实现。如下:
修改detail项目resources目录下hsf-consumer-beans.xml配置文件。注意此处:hsf:consumer的属性id设置为“print”代码如下:
<hsf:consumer id="print" interface="com.alibaba.edas.carshop.itemcenter.PrintService" maxWaitTimeForCsAddress = "3000" version="zhuizhi.20180809" group="testHSFGroup"> </hsf:consumer>
修改detail项目中StartListener类,通过上述id属性“print”获取到PrintService的实例。通过printService调用print方法完成远程hsf接口调用。代码如下:
@Override public void contextInitialized(ServletContextEvent sce) { ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext()); final ItemService itemService = (ItemService) ctx.getBean("item"); final PrintService printService = (PrintService) ctx.getBean("print"); Thread thread = new Thread(new Runnable() { @Override public void run() { Random random = new Random(); while (true) { try { Thread.sleep(500l); System.out.println(itemService.getItemById(1111)); System.out.println(itemService.getItemByName("myname is le")); System.out.println(printService.print("zhuizhi.czj.") + random.nextInt()); } catch (Throwable e) { e.printStackTrace(); } } } }); thread.start(); }
十、验证HSF应用
10.1 启动rpc provider
下面咱们要开始验证上述所编写的hsf应用,首先,需要启动rpc provider将接口信息注册到轻量级配置中心。下面对rpc provider的启动做详细的阐述:
itemcenter项目有接口的实现是hsf的provider。下面以eclipse为例,选中itemcenter项目右键,操作如下:
设置Tomcat4E。右键单击相应的 Eclipse 工程(本示例中的itemcenter项目),右键菜单-> Run As > Run Configurations。查看弹出的配置窗口。
选择左侧导航选项中的 AliTomcat Webapp,新增启动配置; AliTomcat 选项卡,有2项需要注意的配置项,即:Pandora的taobao-hsf.sar location(配置hsf相关包地址)和Web Application下的Tomcat Port(tomcat启动端口号)。下面阐述这两项如何配置。
Pandora (taobao-hsf.sar location) 区域,选择 Use local taobao-hsf.sar;单击旁边的 Browse 以选择本地的 Pandora 路径(如:d:\work\tomcat\deploy\taobao-hsf.sar);
Web Application下的Tomcat Port配置的是tomcat启动端口号,默认8080端口。在这之前“轻量级配置中心”默认也是使用8080端口号,这就可能造成启动后端口冲突。在这里,建议大家修改Tomcat Port的8080为8081。如下图所示:
6. 根据上述内容在Run Configurations配置完成后,单击 Apply 或 Run,完成设置。一个工程只需配置一次,下次可直接启动(即,右键单击项目->Run/Debug->RunAs->Alitomcat Webapp 可以直接运行应用之前的配置);
运行成功后,可以在“轻量级配置中心”查看到发布的接口信息。其中,轻量级配置中心的“服务列表”需要根据“IP地址”或“服务名”进行搜索,“IP地址”必须写完整的本机IP(即,写127.0.0.1无效),而如果根据“服务名”搜索,则服务名需要写完整(例如:com.alibaba.edas.carshop.itemcenter.PrintService才算一个完整的服务名)。
8.查看服务注册日志,C:\Users{当前用户}\logs\configclient\config-client.log中可以看到如下信息,对应服务Publish-ok。
10.2 启动rpc consumer
上述已经将rpc provider(即:itemcenter项目)启动并对外暴露接口信息,提供远程的服务。下面将启动接口调用方通过rpc的方式远程调用rpc provider的接口。
启动当前rpc consumer(即:detail项目)前,确保“轻量级配置中心”和itemcenter项目都已经启动。
启动detail项目,步骤跟itemcenter项目启动方式相同。即:需要通过右键菜单-> Run As > Run Configurations配置Run/Debug中Tomcat Port(可配置为8082端口)和taobao-hsf.sar地址)。
代码通过StartListener启动后默认调用itemcenter项目的rpc接口,调用成功可以在控制台看到以下信息: