项目技术杂谈

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

    关于SpringMVC:

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

    关于Mybatis:

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

    关于分布式设计:

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

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

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

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

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

    关于前端:

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

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



你可能感兴趣的:(项目技术杂谈)