项目技术杂谈

      自6月份离开老东家东软以来,加入了一个创业团队,从新开启了新的工做范畴。6个月来,技术接触了不少,基本上将以前熟悉的框架都抛弃了,主要基于SpringMVC来作web后端和系统服务端。离开以前的温馨区,到一个暂新的环境,确定会有一段不太适应的阶段,生活就是这样,不把本身逼得狠一点儿,你永远不会知道本身到底几斤几两。引用最近看到的一句话,作为开头,与君共勉。( 为了抵达明天,必须远望后天,不然明天只是又一个今天。从今天到明天很难,从后天到明天较易。#后天观#)。前端

    关于SpringMVC:jquery

    做为喜欢极致简单开发的我,真的是没法喜欢上springMVC,虽然它已经极简的减小了xml的配置,甚至已经能够作到0配置,不知为何,就是以为很麻烦。另外,开发过程当中让人头疼的400错误,调试起来也很困难,也许看过源码实现的人会对其强大的功能吸引,可是究竟有几我的看过呢?nginx

    关于Mybatis:angularjs

    以前接触的仍是老版本的ibatis,它给我最大的惊艳点,就是对单表操做可以使用Generator生成类来进行操做,方式很便捷。相比与老版本,无需配置文件,但注解是少不了的,也不是不少,可在接受程度内。 web

    关于分布式设计:redis

   说到系统支持分布式,都会给人一种高大上的感受,实际上无非作好以下几点就好:数据进程级共享、各工做单元存活检测。spring

   数据共享可使用NoSQL类中间件,是否须要持久化就看数据需求了。当前项目使用redis来进行数据共享,可简单理解成key=value类存储单元,value能够是queue,json,或单纯的字符串等。另外redis还支持sort排序,也就是对特定分类数据来进行按时间戳排序,让我想到以前项目设计时若是将设备的位置信息存储在redis中,会不会少了不少轨迹回放性能上的瓶颈点。json

   使用rabbitMQ的push、pull方式,解决系统推送需求,及模块间关注数据的订阅要求。bootstrap

    各工做单元存活检测主要使用zookeeper,将一些业务数据放到持久化节点上,而临时节点用作各节点活跃状态监控源,各节点watch临时节点来随时准备有兄弟挂掉,后继冲上顶替。后端

   说到分布式设计,另外一个不得不涉及的地方就是负载均衡,F5类设备价格过高昂,不会有那些客户愿意掏钱来买,作产品的话,前期也不会考量使用。这时候使用软负载也能够知足,nginx支持反向代理,能够作到对外屏蔽系统内部各功能模块,也间接的作到了负载均衡的做用,根据客户端请求中头信息包含的关键属性来进行一致性hash来作任务分发。lua插件开源社区也很活跃,不少功能均可直接获取。

    关于前端:

    前端尝试使用了angularjs,其独特的MVVM双向数据绑定功能,真的是很方便,开发思考方式和jquery比起来会有些不一样。惟一遗憾的是,插件仍是不如jquey社区丰富,有不少功能还须要借助jquery插件进行二次封装成directive来进行使用。web效果主要仍是基于UI/UE设计和bootstrap来尽量的实现响应式布局。

    忙完当前阶段,将会继续进行大数据相关的工做内容,如今大数据相关的人真的是很难招,数据科学家离咱们太远,何况没个3-5年专职工做经验的人根本解决不了实际问题,真有这样的人,也请不起。培养内部人员,才是公司长久发展的关键。