`
天空晴朗
  • 浏览: 26986 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(十七) 构建dubbo分布式平台-创建dubbo服务生产者

阅读更多

在前面的章节中,我们定义了dubbo服务的接口,接下来针对于接口的实现,我们要定义服务的生产者,服务生产者最终会被注册到注册中心上。

1. 创建ant-bookmark-service项目(dubbo服务生产者),其中pom.xml文件定义如下:

<?xml version="1.0"?>
<project
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>com.sml.sz</groupId>
		<artifactId>ant-project</artifactId>
		<version>1.0.0</version>
	</parent>
	<artifactId>ant-member-service</artifactId>
	<packaging>war</packaging>
	<name>ant-member-service Maven Webapp</name>
	<url>http://maven.apache.org</url>
	<description>ant的我的收藏Dubbo服务接口提供者</description>
	
	<dependencies>
		<!-- alibaba druid connection pool -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>${druid.version}</version>
		</dependency>

		<!-- jdbc driver -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>${mysql.driver.version}</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>com.oracle</groupId>
			<artifactId>ojdbc14</artifactId>
			<version>${oracle.driver.version}</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>net.sourceforge.jtds</groupId>
			<artifactId>jtds</artifactId>
			<version>${mssql.driver.version}</version>
			<scope>runtime</scope>
		</dependency>

		<!-- AOP相关包 -->
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
			<version>1.7.4</version>
		</dependency>
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.7.4</version>
		</dependency>
		<dependency>
			<groupId>cglib</groupId>
			<artifactId>cglib</artifactId>
			<version>3.1</version>
		</dependency>

		<!-- dubbo 需要的jar start -->
		<dependency>
			<groupId>org.jboss.netty</groupId>
			<artifactId>netty</artifactId>
			<version>3.2.5.Final</version>
		</dependency>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>dubbo</artifactId>
			<version>2.5.3</version>
			<exclusions>
				<exclusion>
					<groupId>org.springframework</groupId>
					<artifactId>spring</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<!-- zookeeper jar -->
		<dependency>
			<groupId>org.apache.zookeeper</groupId>
			<artifactId>zookeeper</artifactId>
			<version>3.4.5</version>
		</dependency>

		<dependency>
			<groupId>com.101tec</groupId>
			<artifactId>zkclient</artifactId>
			<version>0.3</version>
		</dependency>
		<!-- dubbo 需要的jar end -->

		<!-- Dubbo服务接口(member) -->
		<dependency>
			<groupId>com.sml.sz</groupId>
			<artifactId>ant-member-facade</artifactId>
		</dependency>
		
		<!-- ant config begin -->
		<!--  系统公共配置 -->
		<dependency>
			<groupId>com.sml.sz</groupId>
			<artifactId>ant-config</artifactId>
		</dependency> 
		<!-- ant config end 公共配置 -->
		
		<!-- ant framework begin -->
		<!--  系统核心框架包 -->
		<dependency>
			<groupId>com.sml.sz</groupId>
			<artifactId>ant-framework</artifactId>
		</dependency>
		<!-- ant framework end -->

	</dependencies>
	<build>
		<finalName>ant-member-service</finalName>
	</build>
</project>

 2. 定义spring-dubbo-provider.xml配置:

 

<?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:application name="ant-service-bookmark" />

	<!-- 使用zookeeper注册中心暴露服务地址 -->
	<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />

	<!-- 用dubbo协议在20801端口暴露服务 -->
	<dubbo:protocol name="dubbo" port="20801" />

	<!-- 监控中心配置,protocol="registry",表示从注册中心发现监控中心地址 -->
	<!-- <dubbo:monitor protocol="registry" /> -->

	<!-- 当ProtocolConfig和ServiceConfig某属性没有配置时,采用此缺省值 -->
	<dubbo:provider timeout="30000" threadpool="fixed" threads="100" accepts="1000" />

	<!-- 和本地bean一样实现服务 -->
	<!-- 声明需要暴露的服务接口 -->
	<!-- 我的收藏管理 -->
	<dubbo:service retries="0" interface="com.sml.sz.bookmark.service.BookmarkTagFacade" ref="bookmarkTagFacade" />
</beans>  

 

3. 定义BookmarkTagFacadeImpl.java,这个是dubbo服务接口的实现类(里面定义了基础的增删改查):

/**
 * 我的收藏链接管理Service
 * @author ant
 * @version 2016-01-30
 */
@Component("bookmarkTagFacade")
@Transactional(readOnly = true)
public class BookmarkTagFacadeImpl extends CrudService<BookmarkTagDao, BookmarkTag> implements BookmarkTagFacade{

	@Autowired
	private BookmarkDao bookmarkDao;
	
	public BookmarkTag get(String id) {
		BookmarkTag bookmarkTag = super.get(id);
		bookmarkTag.setBookmarkList(bookmarkDao.findList(new Bookmark(bookmarkTag)));
		return bookmarkTag;
	}
	
	public List<BookmarkTag> findList(BookmarkTag bookmarkTag) {
		return super.findList(bookmarkTag);
	}
	
	public Page<BookmarkTag> findPage(Page<BookmarkTag> page, BookmarkTag bookmarkTag) {
		User user = UserUtils.getUser();
		System.out.println(user.getId());
		return super.findPage(page, bookmarkTag);
	}
	
	
	@Transactional(readOnly = false)
	public void save(BookmarkTag bookmarkTag) {
		super.save(bookmarkTag);
		for (Bookmark bookmark : bookmarkTag.getBookmarkList()){
			bookmark.setCreateBy(bookmarkTag.getCreateBy());
			bookmark.setUpdateBy(bookmarkTag.getUpdateBy());
			if (bookmark.getId() == null){
				continue;
			}
			if (Bookmark.DEL_FLAG_NORMAL.equals(bookmark.getDelFlag())){
				if (StringUtils.isBlank(bookmark.getId())){
					bookmark.setTagId(bookmarkTag.getId());
					bookmark.preInsert();
					bookmarkDao.insert(bookmark);
				}else{
					bookmark.preUpdate();
					bookmarkDao.update(bookmark);
				}
			}else{
				bookmarkDao.delete(bookmark);
			}
		}
	}
	
	@Transactional(readOnly = false)
	public void delete(BookmarkTag bookmarkTag) {
		super.delete(bookmarkTag);
		bookmarkDao.delete(new Bookmark(bookmarkTag));
	}
	
}

 

4. 定义dao:BookmarkDao.java、BookmarkTagDao.java ,如下:

/**
 * 我的收藏链接管理DAO接口
 * @author ant
 * @version 2016-01-30
 */
@MyBatisDao
public interface BookmarkTagDao extends CrudDao<BookmarkTag> {
	
}

/**
 * 我的收藏链接管理DAO接口
 * @author ant
 * @version 2016-01-30
 */
@MyBatisDao
public interface BookmarkDao extends CrudDao<Bookmark> {
	
}

 5. 定义dao.xml文件:BookmarkTagDao.xml,如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sml.sz.bookmark.dao.BookmarkTagDao">
    
	<sql id="bookmarkTagColumns">
		a.id AS "id",
		a.bookmarktagname AS "bookmarktagname",
		a.remarks AS "remarks",
		a.del_flag AS "delFlag"
	</sql>
    
	<select id="get" resultType="BookmarkTag">
		SELECT 
			<include refid="bookmarkTagColumns"/>
		FROM t_bookmark_tag a
		<include refid="bookmarkTagJoins"/>
		WHERE a.id = #{id}
	</select>
	
	<select id="findList" resultType="BookmarkTag">
		SELECT 
			<include refid="bookmarkTagColumns"/>
		FROM t_bookmark_tag a
		<include refid="bookmarkTagJoins"/>
		<where>
			a.del_flag = #{DEL_FLAG_NORMAL}
		</where>
		<choose>
			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
				ORDER BY ${page.orderBy}
			</when>
			<otherwise>
				ORDER BY a.update_date DESC
			</otherwise>
		</choose>
	</select>
	
	<select id="findAllList" resultType="BookmarkTag">
		SELECT 
			<include refid="bookmarkTagColumns"/>
		FROM t_bookmark_tag a
		<include refid="bookmarkTagJoins"/>
		<where>
			a.del_flag = #{DEL_FLAG_NORMAL}
		</where>		
		<choose>
			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
				ORDER BY ${page.orderBy}
			</when>
			<otherwise>
				ORDER BY a.update_date DESC
			</otherwise>
		</choose>
	</select>
	
	<insert id="insert">
		INSERT INTO t_bookmark_tag(
			id,
			bookmarktagname,
			remarks,
			del_flag
		) VALUES (
			#{id},
			#{bookmarktagname},
			#{remarks},
			#{delFlag}
		)
	</insert>
	
	<update id="update">
		UPDATE t_bookmark_tag SET 	
			bookmarktagname = #{bookmarktagname},
			update_date = #{updateDate},
			remarks = #{remarks}
		WHERE id = #{id}
	</update>
	
	<update id="delete">
		delete from t_bookmark_tag WHERE id = #{id}
	</update>
	
</mapper>

 

到此结束!

欢迎大家跟我一起学习《构建dubbo分布式平台》,希望大家持续关注后面的文章!

 

 

3
0
分享到:
评论
2 楼 天空晴朗 2018-01-02  
tengyue5i5j 写道
版主 有没有源码提供下载学习啊! 谢谢了

有源码,文章里面贴了很多的源码了
1 楼 tengyue5i5j 2018-01-02  
版主 有没有源码提供下载学习啊! 谢谢了

相关推荐

    dubbo-admin-2.5.4.war后台管理

    1. 安全性:由于`dubbo-admin`直接暴露了服务管理接口,因此在生产环境中,应限制访问权限,避免未授权的操作。 2. 版本兼容性:确保`dubbo-admin`的版本与运行中的Dubbo服务版本相匹配,以确保最佳的兼容性和功能...

    dubbo-admin-2.5.4

    《Dubbo Admin 2.5.4:管理与监控Dubbo服务的利器》 Dubbo是阿里巴巴开源的一款高性能、轻量级的服务治理框架,而`dubbo-admin-2.5.4`则是Dubbo框架中的一个重要组件,它是一个用于监控和服务管理的Web应用。这个...

    dubbo-monitor-simple-2.5.4

    首先,`dubbo-monitor-simple`是一个独立的项目,它基于Spring MVC构建,提供了对Dubbo服务调用的可视化监控界面。版本2.5.4是这个项目的某个稳定版本,它包含了监控所需的核心功能。通过解压`dubbo-monitor-simple-...

    dubbo-admin-2.5.3.war

    而`dubbo-admin-2.5.3.war`是Dubbo官方提供的一款用于后台管理的服务监控工具,它是一个可部署于Tomcat等Servlet容器的WAR包,极大地提升了开发者对分布式服务的管理和监控能力。 Dubbo Admin的主要功能包括服务...

    dubbo-admin-2.5.8

    在Dubbo的生态系统中,`dubbo-admin`扮演着至关重要的角色,它是Dubbo服务的后台管理工具,提供了监控、配置、治理等全方位的功能,极大地简化了开发者对分布式服务的管理工作。本文将深入解析`dubbo-admin-2.5.8`...

    dubbo-monitor-simple-2.8.4-assembly.tar.gz

    - Dubbo的监控数据来源于每个服务提供者和服务消费者节点上的`ProviderStatService`和`ConsumerStatService`,它们周期性地将统计数据上报到监控中心。 - 这些统计数据包括但不限于:QPS(每秒请求数)、TPS(每秒...

    dubbo-admin-2.5.4.zip

    Dubbo,作为阿里巴巴开源的一款高性能、轻量级的Java服务治理框架,已经成为了分布式微服务架构中的重要组件。其中,`dubbo-admin`是Dubbo生态系统中的一个重要部分,它提供了图形化的后台管理界面,便于开发者对...

    dubbo-admin-2.6.0.war(dubbo监控中心)

    【标题】"dubbo-admin-2.6.0.war(dubbo监控中心)" 提供的是一个用于管理Dubbo服务的控制台,它允许开发者和运维人员对Dubbo...通过理解这些知识点,你可以更有效地利用dubbo-admin来管理和优化你的Dubbo分布式系统。

    dubbo-admin-ROOT.zip

    Dubbo是一个由阿里巴巴开源的高性能Java RPC框架,它允许开发者构建分布式服务系统,提高系统的可扩展性和可靠性。 【描述】提到的"拿出来就可以用"意味着这个压缩包内的dubbo-admin已经配置好,可以直接部署到...

    jdk1.8可用的dubbo-admin-2.5.4.rar

    Dubbo是一款高性能、轻量级的服务治理框架,由阿里巴巴开源,它专注于服务治理,帮助开发者在分布式环境中构建、发布、监控服务。这个RAR压缩包包含的是Dubbo Admin 2.5.4,它是Dubbo生态系统中的一个重要组件,用于...

    Dubbo视频教程--高可用架构篇

    3. "edu-demo-mqproducer-A"和"edu-demo-mqproducer-B":同样,这可能代表两个生产者服务实例,它们负责发布消息到队列中,用于演示如何在Dubbo架构中引入消息队列以实现服务间的异步处理和解耦。 在高可用架构中,...

    dubbo-monitor-simple-2.5.4-SNAPSHOT-assembly.tar

    Dubbo的核心功能包括服务注册与发现、负载均衡、容错机制、调用链跟踪等,这些功能使得开发者能够轻松构建分布式的微服务系统。 Monitor Simple是Dubbo监控体系中的一个简化版本,它允许开发者监控服务的运行状态,...

    incubator-dubbo-ops-master-.zip

    这个工具旨在提供对Dubbo分布式系统资源使用的实时监控能力,确保系统的稳定运行。 【描述】中提到,这个版本是开发者之前学习时使用的,尽管如此,它的稳定性得到了保证,意味着它可以有效地在生产环境中应用,...

    dubbo-provider-consumer生产者消费者实例

    通过这个实例,我们可以深入了解 Dubbo 如何在生产者和消费者之间建立高效的通信机制,以及如何利用服务治理功能优化分布式系统的性能和稳定性。对于实际开发,这将有助于我们更好地理解和应用 Dubbo 在大型分布式...

    Dubbo视频教程--基础篇源代码6-10

    Dubbo是一个高性能、轻量级的Java开源框架,主要用于实现分布式服务治理。它由阿里巴巴开发并维护,旨在提供简单、高效的服务发现、调用、负载均衡和服务治理能力。本视频教程的基础篇源代码6-10是针对初学者设计的...

    tomcat-dubbo里包含dubbo-admin

    1. **Dubbo框架**:Dubbo是阿里巴巴开源的一个分布式服务框架,它致力于提供高性能和透明化的RPC远程调用解决方案,以及服务发现、注册、配置管理等一系列微服务治理功能。Dubbo的核心组件包括服务提供者(Provider...

    dubbo-monitor-simple-2.5.3.zip dubbo的监控中心,亲测可用使用

    1. 配置服务提供者:在服务提供者的配置文件中(通常是dubbo.properties或application.xml),添加监控中心的相关配置,如: ```xml &lt;dubbo:monitor protocol="registry" /&gt; ``` 这会自动注册到注册中心,并使用...

    dubbo-monitor-simple-2.5.10

    《Dubbo Monitor Simple 2.5.10详解:洞察服务治理的核心工具》 Dubbo Monitor Simple是一款由Apache Dubbo框架提供的轻量级监控中心,版本2.5.10进一步提升了其在服务治理中的实用性。它旨在为开发者提供一个直观...

    dubbo-monitor-simple-2.5.10-assembly.tar.gz

    在分布式系统中,服务治理和监控是至关重要的组成部分,而Dubbo作为一款高性能、轻量级的Java RPC框架,提供了丰富的服务治理功能。本文将详细探讨Dubbo的监控组件——dubbo-monitor-simple的2.5.10版本,帮助开发者...

    dubbo-admin-2.5.8war包jdk1.8亲测可用

    1. **Dubbo**: Dubbo是阿里巴巴开源的一个高性能、轻量级的服务治理框架,它主要面向Java语言,用于构建分布式服务。在微服务架构中,Dubbo常作为服务治理的核心组件,提供服务注册、服务发现、调用路由、负载均衡等...

Global site tag (gtag.js) - Google Analytics