apache+tomcat配置负载均衡,实现http与websocket接口分压

一、应用场景

在生产环境中,应用服务器(此文以tomcat为例)不免面临高访问量的压力,相比而言web服务器(此文以apache为例)能够承担更大的并发量。Apache本身带有一些模块,可以完成对应用服务器访问流量分流分压的功能。这里就以apache+tomcat配置负载均衡的方式,实现httpwebsocket接口分压的效果。

二、系统环境

服务器:阿里云ECS服务器;

操作系统:ubuntu 14

应用服务器:tomcat 8.5+;

Web服务器:apache 2.4+;

三、Tomcat配置

tomcat官网下载压缩包,解压为两个tomcat实例(分别为tomcat-8080tomcat-8082)。

a) 修改tomcat-8080的配置文件(conf/server.xml

 <Connector port=”8080″ protocol=”HTTP/1.1″

               connectionTimeout=”20000″

               redirectPort=”8443″ URIEncoding=”UTF-8″ />

 <Connector port=”8010″ protocol=”AJP/1.3″

redirectPort=”8443″ URIEncoding=”UTF-8″ />

 <Engine name=”Catalina” defaultHost=”localhost” jvmRoute=”jvm8080″>

四、修改tomcat-8082的配置文件(conf/server.xml

 <Connector port=”8082″ protocol=”HTTP/1.1″

               connectionTimeout=”20000″

               redirectPort=”8443″ URIEncoding=”UTF-8″ />

 <Connector port=”8012″ protocol=”AJP/1.3″

redirectPort=”8443″ URIEncoding=”UTF-8″ />

 <Engine name=”Catalina” defaultHost=”localhost” jvmRoute=”jvm8082″> 继续阅读apache+tomcat配置负载均衡,实现http与websocket接口分压

开源之我见

2016年冬,我决定挣脱束缚的枷锁,不再作为他人的“试验品”,毅然走上那条路。

在迷茫无助之际,感谢我的精神导师——《极客与团队》的作者——引导我走向组建学习型分享型组织与开源运动的道路。

近些年,国内开源运动风生水起。开源项目如雨后春笋般地增长,其中不乏知名互联网企业的贡献,同时也可以看到新兴互联网企业的身影。

说到开源,一般的企业是不赞同,甚至坚决反对的。但这里不谈商业,只谈行业!

程序猿、攻城狮、产品狗等IT从业人员。应该清楚地看到,你们的舞台(亦或是战场)不仅仅是在你所效力的平台,是时候睁开眼去看看分布在全球各地的兄弟姐妹们了。

一、我们是对手,更是朋友

“如果你成功了,要感谢你的家人与朋友;如果你想持续成功,那请向你的对手致敬!”——我说的。同行,是个很微妙的关系。——即存在着竞争关系又存在着合作关系。——无法同时处理好这两种关系,可能会难以理解一些工作(甚至事业)上的“不可思议的游戏规则”。

兴许很多人已经看透了平台里这些潜规则,并能娴熟的做出对自己最有利的决定。但这里,我想说的是,“去与平行世界里的自己做游戏”。——这个“平行世界里的自己”不是“多重宇宙的自己”,而是分布在世界各地的,忙碌在所效力平台的自己(因为我们是一体的)。

感谢互联网,连接了你我的心;感谢开源运动,连接了你我的大脑。

“如果你自满了,那就出去看看外面的世界;如果你孤单了,那就去看看外面的世界。”开源运动,为全球的从业者搭建了一个开放、平等、自由的交流平台。在这里,你可以看到行业前沿,为自己的事业发展指明道路;在这里,你可以进行思想与思想的碰撞,激起创新的火花;在这里,你可以与全球最优秀的同行同台竞技,保持自己的最佳状态。

这是你的归宿——在这里你可以遇到志同道合的朋友,甚至人生的贵人。这是你的起点——积蓄好力量,望着远方,继续出发。 继续阅读开源之我见

java项目,基于maven的模块化开发与微服务架构

自从爱上maven的模块化开发,就不能自拔。

在实际项目中,代码复用是每个公司希望做的一项工作。但在初期,项目紧、任务重的情况下,如何兼顾代码复用(当然,就把复制代码算是最低级的代码复用吧,不过这可就做不到功能抽象的程度)与业务项目开发的确需要一定的构思。

对于单体项目(基本上所有的功能都在一个项目里,最后打包成一个jar或者war),可能规范命名空间(包名、类名),是个不错的选择。——把一个功能封装在一个命名空间里,提供仅有的几个public的API。代码复用以复制文件夹的形式重用,再好点就专门做成一个鱼龙混杂的“基础包”。

maven让你多了一个选择,可以把可重用的功能抽象到一个maven模块里(一般是个jar),在一个项目里积累的maven模块,在可以在项目收尾后进一步抽象为组织过程资产级别的模块。在其他项目里,只需要引入这个jar(maven的pom.xml方式或者ant方式)。

至于业务性质的功能模块(如支付功能,文件上传功能),可以开发为jar,然后被一个war类型的模块引入,一个微服务就出来了。。。。但然也可以根据业务需要,把几个业务jar封装到一个war模块里,一个传统的单体项目也就出来了。。。

当然maven-module模式的架构,需要对maven的应用有一定的了解。不过我相信,站在巨人的肩上,我们能看的更远!

蜗牛,为加班而生~

arttemplate嵌套子模板,属性不存在时,取值bug与解决办法

无可置疑,arttemplate是本人用过的最好用的前端模板引擎。不过随着使用的深入与更加广泛,还是遇到了一些梗。下面将较少一个本人遇到的实际问题,分析方法与采用的解决办法。

一、问题描述

Arttemplate嵌套子模板,属性不存在时,默认值$data取值为当前父级。

<body>
<div id="demo"></div>

<!--
作者:1209461019@qq.com
时间:2017-02-17
描述:主模板
-->
<script type="text/html" id="demo_T">
{{each}}
	<div>姓名:{{$value.name}}</div>
	<div>性别:{{$value.age}}</div>
	<!--
		作者:1209461019@qq.com
		时间:2017-02-17
		描述:嵌套子模板
	-->
	<div>朋友:{{include 'demo_sub_T' $value.friends}}</div>
	<hr /> 
{{/each}}
</script>
<!--
	作者:1209461019@qq.com
	时间:2017-02-17
	描述:子模板
-->
<script type="text/html" id="demo_sub_T">
{{each}}
	<div>朋友姓名:{{$value.name}}</div>
	<div>朋友年龄:{{$value.age}}</div>
{{/each}}
</script>
 继续阅读arttemplate嵌套子模板,属性不存在时,取值bug与解决办法

maven-module多模块依赖项目在eclipse中搭建与开发

一、Maven-module多模块依赖项目说明

Maven-module项目可以把较大的项目按照功能或者层次进行横向与纵向的模块化分割。项目结构是父项目子模块的结构进行组织。整个项目以pom型项目进行组织,其模块可以是jar项目,也可以是war项目,也可以pom项目。合理的使用maven-module项目,可以是项目结构分明,同时提高了代码的复用性。

二、Maven-module项目示例结构

本文以maven插件官方示例(具体地址请查看附录)为素材,进行了项目搭建、运行与打包。项目代码压缩包请查看附录。

Maven project structure

pom.xml          (top level pom with packaging pom)

my-api/pom.xml     (api project with packaging jar)

my-api-impl/pom.xml  (api implementation project with packaging jar)

my-webapp/pom.xml   (webapp project with packaging war)

三、Maven-module项目eclipse下使用tomcat启动

直接上图

继续阅读maven-module多模块依赖项目在eclipse中搭建与开发