您当前的位置: 首页 >  zookeeper

wespten

暂无认证

  • 1浏览

    0关注

    899博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

分布式架构Dubbo与Zookeeper基于SSM框架的整合

wespten 发布时间:2020-03-30 20:37:14 ,浏览量:1

项目说明:

(避免并发问题(1000并发一个Tomcat500并发)&Tomcat 集群(session问题,配置广播信息)&配置Session(Tomcat的Session复制占用带宽,网络风暴)&多集群(tomcat集群5个作用)&受限制的复制带宽(10000并发)&警惕网络风暴&分布式消息跟踪系统设计(系统与系统之间通信协作,集群一套代码部署多份,分布式一个系统拆分多个子系统,团队隔离不干扰,系统扩展方便)&缓存模式&SOAP 简介&(查询商品一样的服务,代码没办法复用)&WebService& RPC服务框架:Dubbo&(服务使用Dubbo中间件进行管理调用服务)&ActiveMQ & JMS(系统之间解耦)) 

项目框架:

SSM框架的搭建说明

(pom.xml配置(Parent跳过骨架,需不要继承其他)&Manager(统一定义版本号,propereties,dependencyManagement依赖管理管理版本号,不会依赖jar包,只是统一定义版本号)&添加jacksonJSON解析处理类库并运行(spring必须要依赖jackson)&创建buildxml 文件(指定字符集与Java编译插件,tomcat的插件)&)

taotao-parent

pom.xml


	4.0.0
	com.taotao
	taotao-parent
	0.0.1-SNAPSHOT
	pom
	
		4.12
		4.2.4.RELEASE
		3.2.8
		1.2.2
		1.2.15
		5.1.32
		1.6.4
		2.4.2
		1.0.9
		4.3.5
		1.2
		2.5
		2.0
		2.5
		3.3.2
		1.3.2
		3.3
		3.4.2-fix
		0.9.1
		1.3.1
		2.7.2
		4.10.3
		2.5.3
		3.4.7
		0.1
		5.11.2
		2.3.23
		2.2.2
	
	
		
			
			
				joda-time
				joda-time
				${joda-time.version}
			
			
			
				org.apache.commons
				commons-lang3
				${commons-lang3.version}
			
			
				org.apache.commons
				commons-io
				${commons-io.version}
			
			
				commons-net
				commons-net
				${commons-net.version}
			
			
			
				com.fasterxml.jackson.core
				jackson-databind
				${jackson.version}
			
			
			
				org.apache.httpcomponents
				httpclient
				${httpclient.version}
			
			
			
				org.quartz-scheduler
				quartz
				${quartz.version}
			
			
			
				junit
				junit
				${junit.version}
				test
			
			
			
				org.slf4j
				slf4j-log4j12
				${slf4j.version}
			
			
			
				org.mybatis
				mybatis
				${mybatis.version}
			
			
				org.mybatis
				mybatis-spring
				${mybatis.spring.version}
			
			
				com.github.miemiedev
				mybatis-paginator
				${mybatis.paginator.version}
			
			
				com.github.pagehelper
				pagehelper
				${pagehelper.version}
			
			
			
				mysql
				mysql-connector-java
				${mysql.version}
			
			
			
				com.alibaba
				druid
				${druid.version}
			
			
			
				org.springframework
				spring-context
				${spring.version}
			
			
				org.springframework
				spring-beans
				${spring.version}
			
			
				org.springframework
				spring-webmvc
				${spring.version}
			
			
				org.springframework
				spring-jdbc
				${spring.version}
			
			
				org.springframework
				spring-aspects
				${spring.version}
			
			
				org.springframework
				spring-jms
				${spring.version}
			
			
				org.springframework
				spring-context-support
				${spring.version}
			
			
			
				jstl
				jstl
				${jstl.version}
			
			
				javax.servlet
				servlet-api
				${servlet-api.version}
				provided
			
			
				javax.servlet
				jsp-api
				${jsp-api.version}
				provided
			
			
			
				commons-fileupload
				commons-fileupload
				${commons-fileupload.version}
			
			
			
				redis.clients
				jedis
				${jedis.version}
			
			
			
				org.apache.solr
				solr-solrj
				${solrj.version}
			
			
			
				com.alibaba
				dubbo
				${dubbo.version}
			
			
				org.apache.zookeeper
				zookeeper
				${zookeeper.version}
			
			
				com.github.sgroschupf
				zkclient
				${zkclient.version}
			
			
				org.apache.activemq
				activemq-all
				${activemq.version}
			
			
				org.freemarker
				freemarker
				${freemarker.version}
			

		
	

	
		${project.artifactId}
		
			
			
				org.apache.maven.plugins
				maven-resources-plugin
				2.7
				
					UTF-8
				
			
			
			
				org.apache.maven.plugins
				maven-compiler-plugin
				3.2
				
					1.7
					1.7
					UTF-8
				
			
		
		
			
				
				
					org.apache.tomcat.maven
					tomcat7-maven-plugin
					2.2
				
			
		
	

( Commons组件(新建web project 目录级别平级的一个jar包,平级目录也可以继承partent配置)&依赖注入(Dependency Injection)(依赖传递与实际依赖))

taotao-common

pom.xml


	4.0.0
	
		com.taotao
		taotao-parent
		0.0.1-SNAPSHOT
	
	com.taotao
	taotao-common
	0.0.1-SNAPSHOT
	
		
		
			joda-time
			joda-time
		
		
		
			org.apache.commons
			commons-lang3
		
		
			org.apache.commons
			commons-io
		
		
			commons-net
			commons-net
		
		
		
			com.fasterxml.jackson.core
			jackson-databind
		
		
		
			org.apache.httpcomponents
			httpclient
		
		
		
			org.quartz-scheduler
			quartz
		
		
		
			junit
			junit
			test
		
		
		
			org.slf4j
			slf4j-log4j12
		

	

pojo类

package com.taotao.common.pojo;

import java.io.Serializable;
import java.util.List;

public class EasyUIDataGridResult implements Serializable{

	private long total;
	private List rows;
	public long getTotal() {
		return total;
	}
	public void setTotal(long total) {
		this.total = total;
	}
	public List getRows() {
		return rows;
	}
	public void setRows(List rows) {
		this.rows = rows;
	}
	
}

(构建WAR文件(创建聚合工厂下面再创建模块,选择pom,也要继承父工程,DAO选择模块打包方式jar包)&依赖(项目之间的依赖)Tbmcat Admin webapp&解决中文乱码&MyBatis逆向工程(Dao依赖pojo,打包方式Jar包,添加MyBatis依赖)&编写Service层处理逻辑(调用服务通过接口调用,打包方式为jar,依赖pojo,service聚合工程是war包要把jar包聚合进来,war包要有web目录工程,服务层要用到spring容器)&Web Service(src/main/webapp相当于webroot根目录需要有一个WEB-INF/web.xml)&web.xml文件(乱码过滤器只有表现层post提交才需要,)&)

taotao-manager做为聚合项目要进行统一管理

taotao-manager

pom.xml


	4.0.0
	
		com.taotao
		taotao-parent
		0.0.1-SNAPSHOT
	
	com.taotao
	taotao-manager
	0.0.1-SNAPSHOT
	pom
	
		
			com.taotao
			taotao-common
			0.0.1-SNAPSHOT
		
	
	
		taotao-manager-dao
		taotao-manager-pojo
		taotao-manager-interface
		taotao-manager-service
	
	
		
			
				org.apache.tomcat.maven
				tomcat7-maven-plugin
				
					/
					8080
				
			
		
	

(简单配置Spring(web要独立运行,Maven工程,打包war)&创建web.xml文件(web项目可独立部署))

(启动Web应用程序&列出已经部署的Web应用程序&配置Web应用服务器Tomcat(Tomcat插件是Maven插件不要本地安装Tomcat,从公网下载tomcat的jar包放在仓库,也是Java开发直接运行,tomcat插件有个path/ 启动工程的工程名,不需要工程名) &port:查看服务容器端口状态(不配port默认8080)&Clean生命周期()&通过M2Release 插件管理Maven 版本发布&修改启动端口&编译打包运行&启动应用(Maven build clean tomcat7:run )&打包和运行(Update project刷新pom文件之间的依赖关系,Maven install)&的<welcome>简单标签(启动访问就能看到,))

(聚合(所有war包都会把jar包加入进去,有个聚合工厂,有任何修改不需要安装,运行聚合工程manager,Maven build )&Clean生命周期(把之前编译的目标文件删除之后,再重新编译一遍)&)

(在Eclipse中创建Library库(打成jar包,访问jar包里的配置文件,在最终运行的war包中service下的lib下的配置文件中,都是classpath)&创建MyBatis映射的相关文件(main/resources/)&配置applicationContext.xml文件(mybatis与spring的整合,配置数据库连接池,SqlSessionFactory,Mapper映射文件的包扫描器,加载配置文件context-property-placeholderlocation=”classpath:propertiees/db.properties”后面不能有空格)&MapperScannerConfigurer(包扫描器,加载全局的配置文件必须要有,basePackage)&Spring整合MyBatis(sqlSessionFactory dataSource name=”configuration” value=”classpath:mybatis/sqlMapConfig.xml”)&sqlSessionFactory创建&)

(创建Service对象(扫描所有带service注解的类放在容器中,context:component-scan base-package=””子包也能扫描到)&启用自动配置注解&hibernatetransactionmanager的实现(事务管理器DataSourceTransactionManager指定数据源)&数据库通知(txAdvice通知,以save等单词开头会开启事务,read-only不需要开启事务)&应用切面(advisor

Advice-ref=”txAdvice” pointcut=”execution(* com.taotao.service.*.*(..))”)&)

(初始化pring 应用(web.xml )&Spring容器&ContextLoaderListener(初始化srpigng容器,加载context-param contextConfigLocation param-value classpath:spring/application-*.xml)&DispatcherServlet(前端控制器,)&DispatcherServlet的初始化&父子容器(spring父容器ContextLoaderListener,配置前端控制器之后子容器DispatcherServlete初始化,子容器可以访问父容器,父容器不可以访问子容器,父容器Dao或者Service,子容器放入Controller,子容器可以注入Dao)&)

taotao-manager-pojo

pom.xml


	4.0.0
	
		com.taotao
		taotao-manager
		0.0.1-SNAPSHOT
	
	taotao-manager-pojo

	4.0.0
	
		com.taotao
		taotao-manager
		0.0.1-SNAPSHOT
	
	taotao-manager-pojo

taotao-manager-dao

pom.xml


	4.0.0
	
		com.taotao
		taotao-manager
		0.0.1-SNAPSHOT
	
	taotao-manager-dao
	
		
			com.taotao
			taotao-manager-pojo
			0.0.1-SNAPSHOT
		
		
		
		
			org.mybatis
			mybatis
		
		
			org.mybatis
			mybatis-spring
		
		
			com.github.miemiedev
			mybatis-paginator
		
		
			com.github.pagehelper
			pagehelper
		
		
		
			mysql
			mysql-connector-java
		
		
		
			com.alibaba
			druid
		
	
	
		
			
				src/main/java
				
					**/*.xml
				
			
			
		
	

taotao-manager-interface

pom.xml


	4.0.0
	
		com.taotao
		taotao-manager
		0.0.1-SNAPSHOT
	
	taotao-manager-interface
	
		
			com.taotao
			taotao-manager-pojo
			0.0.1-SNAPSHOT
		
	

ItemService

package com.taotao.service;

import com.taotao.common.pojo.EasyUIDataGridResult;
import com.taotao.pojo.TbItem;

public interface ItemService {

	TbItem getItemById(long itemId);
	EasyUIDataGridResult getItemList(int page, int rows);
}

taotao-manager-service

pom.xml


	4.0.0
	
		com.taotao
		taotao-manager
		0.0.1-SNAPSHOT
	
	taotao-manager-service
	war
	
		
			com.taotao
			taotao-manager-dao
			0.0.1-SNAPSHOT
		
		
			com.taotao
			taotao-manager-interface
			0.0.1-SNAPSHOT
		
		
		
			org.springframework
			spring-context
		
		
			org.springframework
			spring-beans
		
		
			org.springframework
			spring-webmvc
		
		
			org.springframework
			spring-jdbc
		
		
			org.springframework
			spring-aspects
		
		
			org.springframework
			spring-jms
		
		
			org.springframework
			spring-context-support
		
		
		
			com.alibaba
			dubbo
			
				
					spring
					org.springframework
				
				
					netty
					org.jboss.netty
				
			
		
		
			org.apache.zookeeper
			zookeeper
		
		
			com.github.sgroschupf
			zkclient
		
	

web.xml



	taotao-manager
	
		index.jsp
	
	
	
	
		contextConfigLocation
		classpath:spring/applicationContext-*.xml
	
	
		org.springframework.web.context.ContextLoaderListener
	
	

SqlMapConfig.xml




	
	
		
			
			        
        	
		
	

spring

applicationContext-dao.xml



	
	
	
	
	
	
		
		
		
		
		
		
	
	
	
	
		
		
		
		
	
	
	
		
	
	

applicationContext-service.xml



	
	
	
	
	
	
	
	
	
	
	
	
	

applicationContext-trans.xml



	
	
	
		
		
	
	
	
		
			
			
			
			
			
			
			
			
			
			
		
	
	
	
		
	
	

ItemServiceImpl.java

package com.taotao.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.taotao.common.pojo.EasyUIDataGridResult;
import com.taotao.mapper.TbItemMapper;
import com.taotao.pojo.TbItem;
import com.taotao.pojo.TbItemExample;
import com.taotao.service.ItemService;

/**
 * 商品管理Service
 * 

Title: ItemServiceImpl

*

Description:

*

Company: www.itcast.cn

* @version 1.0 */ @Service public class ItemServiceImpl implements ItemService { @Autowired private TbItemMapper itemMapper; @Override public TbItem getItemById(long itemId) { TbItem item = itemMapper.selectByPrimaryKey(itemId); return item; } @Override public EasyUIDataGridResult getItemList(int page, int rows) { //设置分页信息 PageHelper.startPage(page, rows); //执行查询 TbItemExample example = new TbItemExample(); List list = itemMapper.selectByExample(example); //取查询结果 PageInfo pageInfo = new PageInfo(list); EasyUIDataGridResult result = new EasyUIDataGridResult(); result.setRows(list); result.setTotal(pageInfo.getTotal()); //返回结果 return result; } }

(Spring注解驱动设计模式(mvc约束前缀,mvc:annotation-driven)&视图和视图解析器&(bean InternalResourceViewResolver property name=”prefix” value=”/WEB-INF/jsp/”)@Controller注解(包扫描器,扫描带controller注解的内容,context;component-scan base-package=”com.”)&解决中文乱码(post乱码过滤器CharacterEncodingFilter,前端控制器servlet-name DispatchercontextConfigLocationclasspath:spring/springmvc.xml )&load-on-startup Servlet(load-on-startup tomcat启动加载servlet)&对象/关系数据库映射(ORM)(拦截形式url-pattern>/ 拦截所有请求,不要/*会拦截jsp,也会拦截静态资源)&)

(资源和表现层(服务层表现层分开了,工程与工程之间相互调用)&WebService(webService效率不高,使用Dubbo实现服务层与表现层之间通信)&)

(修改字符集(新建数据库,选择字符集)&脚本文件安装(sql脚本文件,右键运行脚本文件,创建工程中用到的表并且导入测试数据,)& MyBatis逆向工程(逆向工程配置文件,连接数据库配置信息与生成pojo存放路径,逆向生成代码分为三类,pojo,一种mapper映射文件与Mapper接口,)&逆向工程配&逆向数据文件生成类&运行测试方法&测试生成的数据文件&)

 

taotao-manager-web

pom.xml


	4.0.0
	
		com.taotao
		taotao-parent
		0.0.1-SNAPSHOT
	
	com.taotao
	taotao-manager-web
	0.0.1-SNAPSHOT
	war
	
		
			com.taotao
			taotao-common
			0.0.1-SNAPSHOT
		
		
			com.taotao
			taotao-manager-interface
			0.0.1-SNAPSHOT
		
		
		
			org.springframework
			spring-context
		
		
			org.springframework
			spring-beans
		
		
			org.springframework
			spring-webmvc
		
		
			org.springframework
			spring-jdbc
		
		
			org.springframework
			spring-aspects
		
		
			org.springframework
			spring-jms
		
		
			org.springframework
			spring-context-support
		
		
		
			jstl
			jstl
		
		
			javax.servlet
			servlet-api
			provided
		
		
			javax.servlet
			jsp-api
			provided
		
		
		
			com.alibaba
			dubbo
			
				
					spring
					org.springframework
				
				
					netty
					org.jboss.netty
				
			
		
		
			org.apache.zookeeper
			zookeeper
		
		
			com.github.sgroschupf
			zkclient
		
	
	
		
			
				org.apache.tomcat.maven
				tomcat7-maven-plugin
				
					/
					8081
				
			
		
	

web.xml



	taotao-manager-web
	
		index.jsp
	
	
	
		CharacterEncodingFilter
		org.springframework.web.filter.CharacterEncodingFilter
		
			encoding
			utf-8
		
	
	
		CharacterEncodingFilter
		/*
	
	
	
		taotao-manager-web
		org.springframework.web.servlet.DispatcherServlet
		
		
			contextConfigLocation
			classpath:spring/springmvc.xml
		
		1
	
	
		taotao-manager-web
		
		/
	
	

springmvc.xml




	
	
	
	
		
		
	
	
	
	
	
	
	
	
		
	
      

PageController.java

package com.taotao.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * 页面展示Controller
 * 

Title: PageController

*

Description:

*

Company: www.itcast.cn

* @version 1.0 */ @Controller public class PageController { @RequestMapping("/") public String showIndex() { return "index"; } @RequestMapping("/{page}") public String showPage(@PathVariable String page) { return page; } }

ItemController.java

package com.taotao.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.taotao.common.pojo.EasyUIDataGridResult;
import com.taotao.pojo.TbItem;
import com.taotao.service.ItemService;

/**
 * 商品管理Controller
 * 

Title: ItemController

*

Description:

*

Company: www.itcast.cn

* @version 1.0 */ @Controller public class ItemController { @Autowired private ItemService itemService; @RequestMapping("/item/{itemId}") @ResponseBody public TbItem getItemById(@PathVariable Long itemId) { TbItem tbItem = itemService.getItemById(itemId); return tbItem; } @RequestMapping("/item/list") @ResponseBody public EasyUIDataGridResult getItemList(Integer page, Integer rows) { EasyUIDataGridResult result = itemService.getItemList(page, rows); return result; } }

(Spring集成Dubbo&远程过程调用协议(关系越来越多,调用越来越乱,需要服务治理工具Dubbo,统一注册管理工具)&)

(基于Dubbo实现分布式调用跟踪系统方案(每次调用服务去注册中心调用服务,provider与consumer之间进行通信)&基于ZooKeeper实现分布式配置管理平台方案(zookeeper作为注册中心,集群管理工具)&ooKeeper的下载与集群安装&)

(安装Zookeeper(rm -rf  * 客户端连接zookeeper默认端口2181)&重要的Linux基础命令&SSH和文件传输(scp和sftp)(SecureCRT,)&创建和修改配置文件(mkdir data )&vim程序编辑器(cd ll bin ll conf vim zoo.cfg pwd dataDir) &打包命令:tar(tar zxf zookeeper-3.tar.gz) &XFS文件系统的备份与还原&复制、删除与移动:cp、rm、mv&相对路径与绝对路径(mv zoo.cfg)& start:启动服务容器( ./zkServer.sh start  ./status)& stop:停止服务容器(./zkServer.sh stop)&)

(Dubbo配置(发布服务dubbo:service interface ref直接引入容器中的bean对象启动容器自动发布服务,引入Dubbo相关的Jar包,发布Dubbo服务要配置注册中心的application的name与注册中心的地址)& Dubbo Bean的加载(调用服务dubbo:reference id来引用服务)&long与double的操作不是原子的&注解@Autowired()&排除依赖&基于schema设计解析&基于XML配置实现&服务暴露的实现原理&本地服务的暴露机制(service模块添加对interface模块的引用)&排除依赖&(要把Duubo引入的低版本的Netty与Spring排除))

(单注册中心消费原理&Dubbo远程调用&Dubbo调用介绍&@ResponseBody转换为JSON的秘密(响应Json数据)&Feign声明式调用 406(如果没有把jackSon的jar包加入会发生406的错误)&使用jackson在服务端将JSON字符串转换成各种Java数据类型&)

(Mapper映射文件(解决mapper映射文件不发布的问题,没有把xml文件发布到target目录下,要在build中配置directory路径)&)

(复制、删除与移动:cp、rm、mv &微服务监控中心(Dubbo的监控中心是一个war包,发布到tomcat中启动cp dubbo-admin.war tomcat/webapps/dubbo-admin.war bin/startup.sh tail -f logs/catalina.log。推荐把监控中心与注册中心(zookeeper)安装在一台服务器上,监控连接zookeeper来判断调用关系,如果不再同一台机器,需要修改dubbo-adim中WEB-INF/下的dubbo.properties配置文件,修改zookeeper的地址即可)&)

(静态资源映射(mvc:resources location=”/css/” mapping=”/css/**”是url路径下的多级目录)&点缀 EasyGrid&)

(MyBatis插件机制(xml文件中配置分页插件,plugin在执行查询之前拦截sql语句拼接sql语句,再配置上数据库的方言dialect)&使用MyBatis分页插件pagehelper(startPage两个参数,第几页,每页大小)&从getBean()方法开始&)

(RequestMapping注解(形参名称与参数一致即可映射过来)&)

(源码分析(Debugger需要在configuration中添加源代码/source 添加对应的Java project模块,要注意是否为Spring的@service注解,Dubbo也有service注解)&)

(SVN配置仓库(创建SVN仓库)&应用基于主干的开发实践(代码放在trunk主干里,在分支里开发完毕,之后要把修改内容合并到主干里,发布之后就要建立一个分支,主干向前开发,有bug在分支里修改,保证主干内容是最新的)&基于特性分支的开发(tag标签,根据书签去取哪一个版本)&配置SVN资源库(Copy URL,)&将项目发布到服务器(share Project,创建新的SVN资源库,使用项目名称,之后再trunk下新建一个项目,看到本地与服务端的差异,+要上传的,同步刷新区别,不要把setting project上传服务端添加svn igonore,WINDOW perference SVN Ingore resources Add .settings .project .classPath)&提交(Commit)修改(提交之前先更新,之后提交,提交聚合工厂,不要提交模块会重复提交,要忽略target再提交,先提交pom文件夹,提交之后刷新一下,底下的子文件dao,interface,pojo,service隐藏逻辑删除引用,引用存在的Maven工程)&同步(Update)本地文件()&)

(使用Eclipse作为SVN客户端(SVN资源库研究,废弃位置,千万不能在SVN资源库删除代码,Import 从SVN检出项目,可以多选检出,不要后退)&converter (转为Maven工程,先转parent,再转common,最后Configure-Convert to Maven Project))

 

 

 

关注
打赏
1665965058
查看更多评论
立即登录/注册

微信扫码登录

0.0457s