相关概念
单体架构:略(新手从一开始到现在接触的都是这种架构)
RPC:远程方法调用。有A B两台机器,提供用户注册的服务,用户只能访问A,A必须调用B才能完成某一个操作,此时有两种方案,一是B提供一个接口供A调用,这是基于HTTP协议的;另一方案是A和B自己约定一套协议,可能基于tcp实现了一套协议,总之可以做到比http精简高效。方案二就是RPC,我的理解,RPC其实是为了跟平常熟悉的HTTP接口做区分才整出来的概念,其实不用太纠结RPC,了解RPC这只是为了解微服务做一个过渡。
微服务:在A和B之间加入一个大管家(比如zookeeper、eureka),同时B这个角色满足一些特性(比如完成单一功能、读写分离之类的),这样的架构灵活、有容易监控以及做负载等等有点,这就是微服务。dubbo+zookeeper和spring clound都是提供微服务架构的技术。
dubbo的使用本身很简单,所以入门只需要做一些简单的配置。
pom引入
<!-- dubbo -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>${dubbo.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- zookeeper客户端 -->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>${zkclient.version}</version>
</dependency>
配置
provider
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!-- 使用dubbo标签描述要发布的服务. -->
<!-- 任意定义的一个应用名称. 为dubbo应用命名 -->
<dubbo:application name="dubbo-user-service"></dubbo:application>
<!-- 提供注册中心信息 -->
<dubbo:registry address="localhost:2181"
protocol="zookeeper" />
<!-- 监控中心,监控中心monitor才能收集当前服务的监控信息。才能生成图标。 -->
<dubbo:monitor protocol="registry" />
<!-- 提供协议信息 -->
<dubbo:protocol name="dubbo" port="20880"/>
<!-- 预留配置dubbo:service标签位置 -->
<dubbo:service ref="userProvider"
interface="com.sxt.provider.user.UserProviderService"></dubbo:service>
</beans>
consumer
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!-- 使用dubbo标签描述要发布的服务. -->
<!-- 任意定义的一个应用名称. 为dubbo应用命名 -->
<dubbo:application name="dubbo-user-portal-service"></dubbo:application>
<!-- 监控中心 -->
<dubbo:monitor protocol="registry" />
<!-- 提供注册中心信息 -->
<dubbo:registry address="localhost:2181"
protocol="zookeeper" />
<!-- 预留配置dubbo:reference标签位置 -->
<dubbo:reference interface="com.sxt.provider.user.UserProviderService"
id="userProvider"></dubbo:reference>
</beans>
案例项目地图
dubbo-parent(pom)
|
|
|--dubbo-commons(jar)
|
|--dubbo-entity(jar)
|
|--dubbo-persistent(jar)
|
|--dubbo-user-provider(pom)
| |
| |--dubbo-user-interface(jar)
| |
| |--dubbo-user-service(jar)
| |
|
|--dubbo-user-consumer(pom)
| |
| |--dubbo-user-portal(war)
| |
| |--dubbo-user-portal-service(jar)
| |
| |