分布式架构面试

分布式分层

基础硬件设施层、数据库文件集群层、系统运行权限支撑层、基础信息支撑层、后台运行监管层、soa服务层、各应用系统层、数据交换层、大数据层、网络层

框架模块分层

Bhz-parent

Manven父空壳项目 设置父类绝对路径<relativepath>../bhz-parent</>

pom中配置发布到私服distributionmanagement中repository和snapshotrepository prototies中版本号

外服依赖mvnrepository.com 和自己的maven私deploy服nexus http://localhost:8081/nexus

配置nexus maven的setting配置中1配置本地repository 2配置servers节点用户名密码和 profiles节点中的库地址repositories和插件库pluginrepository地址激活activeprofile

 

Bhz-sys(系统运行web) war包

新建webapp pom引用父项目<parent>设置父类地址/bhz-parent/pom.xml

Buildpath切换jdk 添加appache libiary tomcat, deployment assembly有没有manven

代码规范:引入公司模版java_code_template.xml

Web.xml spring和springmvc和servlet和session和log4

Config.properties jdbc用户名密码和文件上传地址

Log4j.properties

Spring-context  jdbc数据源 食物管理器 注解管理 扫描包

Springmvc配置 上传下载配置 spring过滤jsp  扫描包

Javasrc 命名规范 bhz.sys.web.controller

Maven聚合install 父pom中module中加子

 

Bhz -sys-facad

Bhz.sys.entity(实体) bhz.sys.facad(接口) bhz.sys.serial (实体)dto(外传实体)

Entity层 @nutnull  @jsonproperty @xmlelement @size

Façade层 @path @consumes @produces   @get@path(“/get/{id:\\+id}”)getuser(@pathparam(value=”id”) integer id);

Serial层 serializationoptimizer序列化user层

 

Bhz-sys-service webapp jar包 依赖façade com 负载均衡

maven编译进xml,properties  依赖jar包编译目录和配置首页

com.alibaba.dubbo.container.main

配置dubbox remoting和配置8888 zookeeper集群

Dubbo 生产者provider zookeeper注册中心 引入配置文件  kryo序列化类 rest配置《dubbo:protocl》 配置动态代理aspectj

Dao层 @repository

Service层 @service(“sysuserservice”)@com.alibaba.dubbo.config.annoataion.service(interfacecalss=bhz.sys.facade.sysuserfacade.class)  implement sysuserfacade

 

 

 

Zookeper集群

150主 scp拷贝到远程152153 profile—eookeeper_home—-conf修改datadir,server.0=192.168.1.151:2888:3888,server.1=,..—–scp到151,152,—mkdir data 012—-

到data下—创建myid  150 0,151 1,152 2—-zkserver.sh start

Dubbo管控台dubbo-admin.war到tomcat下webapps下unzip—修改dubbo-admin下dubbo.properties的用户名密码和dubbo.registry.address=zookeeper:192.168.1.151:2181—-

Start tomcat startup.sh—tail-f –n 500 bin/log/Catalina—修改tomcat的jvm内存大小bin下的catalina.sh中加java_opts=’-xms512m –xmx512m’– –运行工程然后进zkcli.sh(ls命令树)或eclipse的zookeeper工具进查看服务—-把service的jiar包和target的lib目录扔181服务器service上—java –jar service.jar &—-8888外部 2088内部—–182部署同样服务 free-m查看内存—–web端引入façade—-web端config.properties加入dubbozookeeper服务bhz-sys,dubbo-consumer配置和前面dubbo-provider一样—-dubbo:refernce interface=”façade”—-

Spring-context中引入dubbo-consumer—-使用@autowire或@resource引入facade

注意 linux下hosts文件命名互相知道对方

Shell脚本不要和服务名称一致———-182

#!/bin/sh

## java env

Export JAVA_HOME=/USR/LOCAL/JDK1.7

EXPORT JRE_HOME=$JAVA_HOME/JRE

 

## exec shell name

EXEC_SHELL_NAME=sys-service\.sh

## service name

SERVICE_NAME=bhz-sys-service

SERVICE_DIR=/usr/local/workspace/sys-service

JAR_NAME=$SERVICE_NAME\.jar

PID=$SERVICE_NAME\.pid

 

Cd  $SERVICE_DIR

 

Case “$1” in

Start)

Nohup $JRE_HOME/bin/java –Xms256m –xmx512m –jar $JAR_NAME >/dev/null 2>&1 &

Echo $! > $SERVICE_DIR/$PID

Echo “#### start SERVICE_NAME”

;;

Stop)

Kill `cat $SERVICE_DIR\$PID`

Rm –rf $SERVICE_DIR\$PID

Echo “#### stop $SERVICE_NAME”

Seleep 5

 

TEMP_PID =`PS –EF | grep –w “$SERVICE_NAME” | grep –v “grep” | awk ‘{print $2}’`

If[ “TEMP_PID” == “”] ; then

Echo  “#### $SERVICE_NAME process not exists or stop success”

Else

Echo “#### $SERVICE_NAME process pid is $TEMP_PID”

Kill -9 $TEMP_PID

Fi

;;

Restart)

$0 stop

Sleep 2

$0 start

Echo “#### reatart”

;;

 

Esac

Exit 0

———-

Chmod 777 sys-service.sh 放开service的log4j日志  sh放到sercie的bin下

Sh sys-service.sh start

Tail到logs

Webapp下建立css gzjs extjs images docs  web.Xml加过gzipfilter滤器

数据库设计

业务分层 模块清晰 主外键约束 时间戳 文档 代码规范

 

Jekins自动化部署 拦截svn 150

安装apache root下yum install httpd httpd-devel ——-启动service httpd start——加入开机

Chkconfig httpd on——修改端口 vim etc下httpd下httpd.conf——安装svn yum install mod_dav_svn subversion —-查看svn配置etc下httpd下conf.d下subversion.conf——-

Svn –version———重启apache service httpd restart——–查看  ls  /etc/httpd/modules/ | grep svn ——- 创建svn库  root下mkdir /svn/ —–编辑subversion.conf 的放开<Location /svn/>DAV svn   SVNListParentPath  on ……</> — /svn/下创建二个文件 touch /svn/passwd.http和touch /svn/authz —-重启apache ——安装svn管控台

先安装mysql—-yum install mysql-server mysql mysql-devel ——启动service mysqld start——查看 chkconfig –list | grep mysqld———开机启动chkcofig mysqld on ——设置mysql密码 mysqladmin –u root password root —–登陆 远程赋权  sql>GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ IDENTIFIED BY ‘root’ WITH GRANT OPTION; FLUSH PRIVILEGES;—–安装svn-tomcat—–修改svn-tomcat/conf/server.xml配置端口9000—— 上传svnadmin.war到webapps下解压tar——修改配置svnadmin下WEB-INF/jdbc.properties配置mysql——-新建mysql库 svnadmin——导入表mysql5.sql和en.sql——启动 /usr/local/svn-tomcat/bin/startup.sh——创建项目/svn/bhz和用户——修改apache的httpd.conf下组group的角色USER root  GROUP root 或者chmod –R apache.apache bhz和chmod –R 777 bhz ——关闭seliux/config  selinux=disabled——-reboot重启 —-安装tortoisesvn客户端——-新建repo 150/svn/bhz/—-建立add forder文件夹结构跟java一样——-eclipse资源库新建——检出—–删除和忽略.project .classpath .setting target—–team svn:ignore——-team 提交

150安装nexus——mkdir /usr/local/nexus—–上传apache-manven和nexus-bundle——tar到nexus—–配置nexus的jetty  conf/nexus.properties 配置端口—–修改bin下的nexus RUN_AS_USER=root—-nexus start—-jswlauncher进程—-访问—–开机启动命令 /etc/rc.d/rc.local添加启动 和 bin/jsw/conf/wrapper.conf配置jdk—–上传一些下载不到的包3rd party artifact upload  dubbo和jdbc—–

Jenkins需要maven—–解压maven—-配置etc/profile  export MAVEN_HOME=——MVN –V—-

配置conf下setting的localrepository 库地址 和 <server></> <profile></profile>

安装jenkins—mkdir jenkinsHome—-配置 etc/profile export JENKINS_HOME=—–安装jenkins-tomcat—修改jenkins-tomcat下server.xml端口7070和字符集uriencoding和catalina.sh内存配置JAVA_OPS

—上传jenkins.war到webapps下—启动tomcat—-jps—-访问—-

也可以 java –jar Jenkins.war

系统管理-安全验证-启动安全专用数据库-安全矩阵添加用户—–添加用户—-系统设置执行者数量和等待时间—-配置jdk和maven、库和svn和邮箱和publish over ssh和sh脚本—-安装jenkin插件ssh、clean up—-

使用jenkins—-取消聚合—–创建一个maven job(和java结构相同)—-discard old builds keep 5—-源码管理配置svn—-pool scm触发构建 表达式生成器 cron.qqe2.com—-maven设置 clean install deploy—保存—console output—-查看nexus

Bhz-service需要发布运行—-触发构建是滞后于façade—-不需要deploy —–发布到多个服务器配置shh site  publish over ssh发布ssh脚本  execute shell script on remote host using ssh

构建前 maven 构建后send build artifacts over ssh发送文件—-部署节点选择传shell脚本—–选择后执行shell权限脚本

 

 

 

测试docker  整体做成一个软件集合镜像 直接运行到别的机器上 docker search redis 找软件  docker images查看

 

 

Bhz-com(公共模块)

Bhz.com.web  bhz.com.utl bhz.com.dao bhz.com.service bhz.com.model bhz.com.constant

Final constant 字符集 根节点 日期格式 json标记 json总数 json消息文本

 

Bhz-mst(基础信息)网盘下载

原文地址:https://blog.csdn.net/fsjvshhl/article/details/88557811

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


首先介绍下什么是git和svnGIT(分布式版本控制系统)Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git是LinusTorvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。SVNSVN是Subversion的简
注意点:系统环境:centos7,python,django,svn,jenkins首先安装好svn版本控制服务,svn安装和配置,也可以通过yum进行安装,安装方式如下yum-yinstallsubversionjenkins安装:jenkins安装参考链接开发ide:pycharm创建项目:django-adminstartprojectcmdbjenkins配置源码管理配置:构
  我使用过的版本控制工具有两种:早期的时候使用的是SVN,现在主要使用git,我就我个人的观点,简单的说下两者的区别:1.Git是分布式的,SVN是集中式的,好处是跟其他同事不会有太多的冲突,自己写的代码放在自己电脑上,一段时间后再提交、合并,也可以不用联网在本地提交;2.Git下载下来后,在本
用好Git和SVN,轻松驾驭版本管理本文从Git与SVN的对比入手,介绍如何通过Git-SVN开始使用Git,并总结平时工作高频率使用到的Git常用命令。 一、GitvsSVNGit和SVN孰优孰好,每个人有不同的体验。Git是分布式的,SVN是集中式的这是Git和SVN最大的区别。若能掌
01.jenkins安装jenkins网站:https://jenkins.io/安装:资料/jenkins.msi安装完成:自动打开浏览器使用8080端口02.jenkins系统配置修改端口号,不能使用8080打开安装目录jenkins.xml --httpPort=18080重启服务器系统管理/系统设置:配置jdk和ant环境  03.jenkins项目自
软件环境:centos7jdk1.8svn1.9maven3.5tomcat8jenkins2.80 以上软件安装过程省略... tomcat增加一个管理员账号和密码jenkins通过maven命令打好的war包,copy到tomcat中,这要求tomcat开启热部署,说白了就是在tomcat的conf目录下的tomcat-users.xml中增加tomcat的用户密码
第一步:通过yum命令安装svnserve,命令如下:yum-yinstallsubversion此命令会全自动安装svn服务器相关服务和依赖,安装完成会自动停止命令运行若需查看svn安装位置,可以用以下命令:rpm-qlsubversion第二步:创建版本库目录(此仅为目录,为后面创建版本库提供存放位置)选择在var路
一、git是什么   1、git二、git和svn的对比     1、git创建分支简单,可以快速创建分支,隔绝自己修改的代码,svn的版本分支     2、git本地就是一个完整独立的分布式的版本库,不需要联网;但是svn需要联网才可以查看    3、git本地包含了完整的日志,svn需要从服
这里碰到svn更新时,提示清理,清理时报错:只需进行以下几个步骤即可解决:(原理即是清除掉svn数据库里的lock记录)1、下载SQLiteManager,svn用的是sqlite数据库,需要一款管理工具。我是在这个地址下载的,破解版(http://www.xue51.com/soft/6213.html#xzdz):①默认安装完成后,点击finish
1、验证是否有安装svn[root@192~]#svnserve--version2、yum安装svn[root@192~]#yuminstall-ysubversion3、创建一个svn的工作目录[root@192~]#mkdir/usr/local/svn4、创建一个测试用的资源仓库[root@192svn]#svnadmincreatetest5、conf目录下
1.SVN版本控制简介版本控制[Revisioncontrol],最初来源于工程设计领域,是维护工程蓝图的标准做法,能追踪工程蓝图从诞生一直到定案的过程。是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统。Subversion就是一款实现版本控制的工具软件,通常也称为版本控制器,简称SVN
一、GitvsSVNGit和SVN孰优孰好,每个人有不同的体验。Git是分布式的,SVN是集中式的这是Git和SVN最大的区别。若能掌握这个概念,两者区别基本搞懂大半。因为Git是分布式的,所以Git支持离线工作,在本地可以进行很多操作,包括接下来将要重磅推出的分支功能。而SVN必须联网才
利用svnadminhotcopy可以实现完全备份,但不能进行增量备份。svnadminhotcopy是将整个库都“热”拷贝一份出来,包括库的钩子脚本、配置文件等;任何时候运行这个脚本都得到一个版本库的安全拷贝,不管是否有其他进程正在使用版本库。优点是:备份过程较快,灾难恢复也很快;如果备份机上已经
1》安装1>下载服务端Setup-subversion.msi文件,下载客户端程序TortoiseSVN.mis文件,下载eclipse插件eclipse_svn_site.zip。2》利用服务端在windows下SVN服务,注意事项:1.cmd必须使用管理员权限打开(创建,开启,停止,删除服务操作都需要管理员权限)2.注册svn服务的命令,参考如下
1、错误描述 org.apache.subversion.javahl.ClientException:Itemisnotwritablesvn:Commitfailed(detailsfollow):svn:Accessdeniedorg.apache.subversion.javahl.ClientException:Itemisnotwritablesvn:Commitfailed(detailsfollow):svn:Accessdeni
问题场景:1记得提交的日志信息中包含openssl,但是不记得这次提交的版本号revesion,是svn初始化后中间的某次提交;2svn环境的操作系统平台为Fedora,即命令行下;而且svnlog的提交记录有12659条;[root@localhostv2.1]#svnlog|grepr|wc-l12659解决办法:step1 查找提交日志
将项目上传到SVN弹出框提示Oneadded/editedTODOitemwasfound.Wouldyouliketoreviewit?然后百度说这样解决:造成这个原因是因为代码里有个自动生成的注释代码块://TODOAuto-generatedmethodstub我们在写方法是自动生成,就有可能自动生成这句话,导致上传SVN时弹出那个
说在前面的话: 从接到任务到完成共用了7天的时间。正常人用不到这个时间。此时的功能表现是:登录本地JenKins对项目进行构建,能够自动从SVN读取最新代码并按照Maven项目构建,构建完成能够自动使用SonarQube分析代码质量,并将构建的War包部署到指定容器中。版权声明:此博客纯手打,个人
javaweb上正式的时候总是会需要更新代码,但是要求不能全量更新代码,只能提供增量更新包,减少不必要的更新。但是呢,自己修改的文件那么多,怎么破,一个个的找出来,新建文件夹,按位置放好,这种做法不是我们这群懒人的方式,我们要的都是一键解决问题。因此有了这个项目。小编整理了一些java进
Oracle12CR2forCentos7背景介绍安装配置这东西吧,真没啥可写的,但是你说不写详细点吧,真的好多学员搞不懂,所以呢,熊熊思前想后,打算把自己从头到尾怎么安装的,完全写一下,希望能让大家有个全面的基础认知准备工作安装Xmanager这个软件功能很强大,熊熊安装他主要是用于把远程服务器的