六年程生涯

版权声明:楼头残梦五更钟,花底离愁三月雨。 https://blog.csdn.net/chuasnpi/article/details/89398750

原 从零到百亿互联网金融架构发展史

回想起从公司成立敲出的第一行代码算起到现在也快三年了,平台的技术架构,技术体系也算是经历了四次比较重大的升级转化(目前第四代架构体系正在进行中),临近年底也想抽出时间来回顾一下,一个小公司从最开始的零交易到现在交易量超过百亿背后的技术变迁。

总体介绍

在互联网金融行业一百多亿其实也算不上大平台,也就是二级阵营吧,其实每次的架构升级都是随着业务重大推进而伴随的,在前一代系统架构上遇到的问题,业务开发过程中积累一些优秀的开发案例,在下一代系统开发中就会大力推进架构升级。一方面可以平滑过度,一方面公司资源可以大力支持,同时技术的小伙伴们可以使用到前沿的技术,更有开发的成就感,就这样我们大概也就是9个月就行系统架构一次升级,就到了我们现在的这套架构中。

很多网友经常会问,你们平台的TPS是多少呀,最大并发是多少呀,性能怎么样,说实话我们是一个小公司,最夸张也就上万人同时抢标,但是做为一个中型的互联网金融平台要做的事情也真的不少,远远不只是这些参数可以说的清楚;我们也不是什么高大上的平台,使用的技术也是目前比较主流开源产品,但在公司不断发展的过程中也遇到了很多的问题,也尽量去使用比较主流的、开源的、适合我们的一些解决方案来构建整个系统,在这里分享平台发展背后技术换代的变化,同时希望和大家多做一些交流,多提一些建议。

我们进行了四次大的架构变化,每代架构都用一句话来总结:

  • 第一代架构特点:业务比较集中、功能满足投资理财需求、快速上线
  • 第二代架构特点;分布式系统改造,平台化初具规模,各项垂直业务系统搭建上线、产品端极大丰富用户投资、大数据平台研究并使用
  • 第三代架构特点;SOA治理,使用zookeeper作为注册中心,dubbo做监控和调度中心;cas实现单点登录,使用shiro做权限控制
  • 第四代架构特点;全面启用微服务开发模式,springboot+springcloud技术桟做为第四代架构技术支撑

下面做详细介绍

第一代系统架构

2014年应该算是互联网金融元年,在之前其实已经有很多互联网公司用着各种模式在生存,一直不温不火,但是到2014年突然火爆了起来,首先是网贷之家,网贷天眼这种第三方网站流量突然增加,接着是媒体报道不断跟进,再后来就报出各种互联网金融公司获得XXX美元投资的报道越来越多,政策也慢慢明朗,于是很多大型公司(集团)也就趁着这股热潮跟进,其中就包括我们。

第一代系统最主要就是抢时间,公司希望用最短的时间内保证系统上线,那时候移动浪潮已经启动,于是决定优先上线移动端,网站可以暂不考虑。公司当时有PHP和Java两种开发语言技术储备,因为PHP在快速开发上面有着非常大的优势,因此决定采用前端PHP+后端Java这种模式。系统分成了三层:用户层:安卓和IOS移动端;接口层:php提供用户和交易接口;后端:后端有两部分,后台和定时系统。后台用PHP开发和接口层公用了一个系统,另一个是定时系统,负责计息、派息、到期等定时任务等使用了java开发。

基础服务和中间件,mysql做了最基本的主从来支持,第一代系统只是使用了mysql的主库,从库只是同步备份;memcached用来处理用户抢标的并发问题,也只用了这一块;ActiveMQ用来使用二级市场的转让撮合以及其它一些异步消息通知。项目部署:php使用apache部署,定时服务使用tomcat6来做应用服务器,使用lvs来做前端apache的负载,基本上第一代也就这些技术了,下面是第一代系统的架构图。

第一代系统上线之后,网站和H5(手机浏览器或者微信端)系统建设就变的特别突出,作为一个互联网金融公司没有官网不能忍,于是又开始马不停蹄的开始开发网站和H5系统,在这个期间PHP之前做的后台这块摘了出来,用java从新规划了一版,至此PHP就负责了网站、APP接口、H5这三个系统,三个系统共用的一个核心交易,java这边负责后台管理和定时服务,我们一般给这个架构叫做1.1代架构。

第1.1代系统架构图,绿色部分为变动部分

第一代系统的缺点是业务过于集中,仓促上线,后期问题较多

第二代系统架构

第二代系统的背景是随着公司业务量的快速发展,很多初期所欠的技术债务统统爆发,线上出现了很多问题,最严重的一次是给个别用户重复派息,各种被骂,现在记忆犹新。另一方各业务部门需求不断,公司产品需求不断,所以这个阶段就是忙着修复各种生产问题,一边还需要开发垂直业务系统。那段时间差点被逼疯了,第一代系统是封闭开发,回来还没缓过劲,这边又赶马上架,真是疼并快乐着。

第一个垂直子系统上线的是:合同系统,当时用户投标后没有一个合同,很多用户很不放心,就把优先级提到了前面。后来就单合同系统就改了三个版本,第一个版本只是生成pdf,第二阶段上线电子签章,第三个阶段加水印,自定义动态生成pdf;紧接着开发积分系统:用户邀请,投资等生产积分,用来兑换抵现卷等;抽离出消息系统:站内消息、短信、邮件等;上线监控系统、业务监控和服务监控,业务失败预警;各业务部门继续不断提需求,上线财务系统:财务人员统计核算金额;风控系统:监控异常用户,异常交易;给销售开发了销售系统;因为和很多第三方系统对接,又开发了对外接入系统。

一代系统做的很赶,产品界面又很烂,随即启动规划了网站2.0、APP2.0、H52.0,针对前端系统的需求,在后端开发了CMS系统来发布项目、公司的公告新闻等;第二代产品端普遍规划了很多大数据分析的一些需求,会在官网展示全量数据分析后投资偏好、投资的金额都跑到哪里去,前端用地图来展示,对于个人也会有还款日历,代收数据分析等,因为需要跑全量数据,在规划的时候都是设计离线来处理,将数据从mysql从库同步到mongodb的集群中,利用mongdo的mapreduce技术来处理大量的数据,于是我们的数据库层就变成下面的这个架构

mysql实时同步到mongodb,我们使用的是tungsten-relicator这个工具,会在mysql服务器端启动一个监控agent,实时监控mysql的binlog日志,同时在mongodb的服务器端也起了一个服务端,agent监控到数据变化后传送给服务端,服务端解析后插入到mongodb集群中以达到实时同步的效果,如上图,当初写了一篇文章来介绍:大数据实践-数据同步篇tungsten-relicator(mysql->mongo),其实这个工具在使用中,也不是特别的稳定,但是当初的选择方案并不多,幸好后期慢慢的熟悉后算是稳定了下来。

数据清洗系统我们大胆的使用了golang来开发,当时使用的golang版本是1.3吧,现在都1.8了,以前也是没有接触过也是锻炼了队伍,好在golang语言本身非常简洁和高效,虽然踩了N多坑,但是最终我们还是按时投产了;后来又使用了golang开发了一个后台,是在beego框架的基础上来做的。大数据分析系统后来又升级了一代,在前端的各业务系统,UI用户层做了很多埋点来收集用户数据,通过activeMQ传输接收最后存储到mongodb,在进行数据清洗,将清洗后的结果存入到结果库中,供前端业务系统使用;后来利用beego+echart重新做了一版数据分析系统。

大数据系统的架构图

因为后端数据库的压力不断增大,后端管理系统、业务系统均作了主从分离;后台管理系统增加缓存,启动了redis做缓存;使用nginx搭建了独立的图片服务器;第二代系统开发过程中,也是公司发展最快的阶段,上线了N多的活动。

第二代系统架构图:

稍等总结一下:
第二代架构上线了各业务系统,做了主从分离,搭建了大数据平台为以后更多的数据处理提供了技术基础
缺点:各业务系统切分之后,各项目之间调用复杂;后台系统繁多、各系统之间有单独的账户系统,运营需要来回切换完成平台运营监控

第三代系统架构

第二代系统开发完成之后,留给我们了三个问题很痛苦,第一个是随着业务系统不断增多,系统之间的调用关系成指数级别上涨,在第三代系统初期,我们又开发了很多基础组件,更是加剧了这个问题;第二个问题和第一个问题相辅相成,系统之间调用关系太多,如果移动其中一个子系统,可能需要修改关联系统的配置文件,重新启动服务,经常因为更新一个系统,其它系统也需要被动更新,投产和出问题切换很复杂;第三个问题是我们开发了很多的后台系统,但是账户没有统一,每个子系统有各自的账户中心,运营和业务人员需要来回登录才能完成日常工作,随着业务量增大这个问题也日益突出。

于是又开启调研、系统选型等,解决第一个问题就是引入SOA服务治理,通过服务的注册和发现解决系统之间的解耦,当时考察了很多,最后选型dubbo,原因无它,有大量群众使用基础该趟的水的趟过了。解决第二个问题就是引入配置中心,当时调研了360的Qihoo360/QConf、Spring的spring-cloud-config、淘宝 的diamond、还有百度的disconf,最后纠结半天选定了disconf,完美和spring cloud擦肩而过,但是正是从这里开始让我们注意到了spring-cloud、Spring-boot为第四代的架构选型做了基础,其实最后disconf也只是在少部分项目使用,也没完全推广开;解决第三个问题就是账户中心,使用了cas实现单点登录,shiro做权限控制,dubbo来提供登录后权限列表等服务端接口。

改造后的架构图

在这个基础上面,我们又抽离出来很多基础组件,comomn组件处理共用的基础类,包含字符类、日期类、加密类….,搭建了fastDFS集群来处理文件系统,做了redis集群的测试;单独开发了定时调度系统,将所有的定时任务统一集成到调度系统,那个系统需要定时任务都可以在页面自动添加调度策略;前端PHP做了系统改造,主从分离、静态优化等

在后来,公司又启动众筹平台的建设,这次系统完全采用java语言开发,app端采用混合开发模式,其中APP的所有一级页面全部采用原生开发,所有的二级页面都是H5+vue这种模式,后端全部采用dubbo做服务化,最终的架构如下:

图里面系统只罗列一部分,使用其它服务来代替

第三代系统启动了SOA服务治理,引入统一账户中心、基础组件;缺点是开发环境较复杂

第四代系统架构

人总是不满足,技术呢也总是希望可以使用最好架构体系,在三代系统架构的开发中,了解到了spring cloud和spring boot,在不断的学习之后,越发的感觉到springboot的便利性,快速开发的优点甚是喜爱,spring cloud体系也完全满足一个大型系统需要考虑的方方面面,微服务的概念不断的被提出来,以上为技术背景;另一方面国家开始严格要求P2P公司必须与银行存管,分析了银行的相关接口后发现如果严格按照规则走,我们的系统需要大改造,同时公司为了满足监管要求,又开发出白条相关产品也是一个大项目,趁着以上的两个背景,我们决定在进行银行存管和白条项目的同时全面拥抱微服务。

至于为什么我们要抛弃dubbo转而全面拥抱spring cloud原因有三,1、dubbo多年都没有更新了,spring cloud不断的在更新升级;2、dubbo主要做服务治理和监控,spring cloud几乎考虑了微服务所需要方方面面,比如统一配置中心、路由中心;3、spring cloud更是无侵并且完美和spring其它项目整合,开发效率更高。

既然选定了使用spring boot+spring cloud来改造,微服务技术选型这边就定了下来,那么如何开启改造呢,毕竟在进行新一代系统改造的同时也不能影响原有业务,其中最主要的问题就是最初的系统虽然都是按照分布式的开发模式来进行,由于老系统的原因有的系统还是共用了一个数据库,微服务要求每个独立的子系统有自己独立的库操作,别的系统如果需要修改或者查询子系统的数据,需要根据服务间接口调用来获取。因此计划先从新开发的项目和需要改造的项目中启用springcloud项目,别的系统暂时先通过路由器模式来通讯,最终的系统架构图如下:

在架构的这条路上面没有终点,变化就是永远的不变,架构的升级更是为了更好的支撑业务,二者相辅相成。

开源软件

在这几年中我们也想对开源世界做一点点贡献,总共开源了两个软件:

generator-web

在项目中大量使用了mybaits,我们对mybaits的generator做了改造,并且做了一个系统界面,方便根据相关参数自动生产相关代码(只需要设计好表结构,系统会自动生成mappper、Entity、dao层的代码),最后也开源了出来

generator-web

界面如下:

云收藏

为了锻炼技术学习springboot我们开发了一个云收藏的开源软件,使用的技术主要是springboot/Spring data jpa/redis/thymeleaf/gradle,功能主要是可以帮助用户在云端收藏、分享和整理自己的收藏夹。

favorites-web

favorites_chrome


作者:纯洁的微笑
出处:http://www.ityouknow.com/
版权所有,欢迎保留原文链接进行转载:)


《算法导论 第三版英文版》_高清中文版

《深度学习入门:基于Python的理论与实现》_高清中文版

《深入浅出数据分析》_高清中文版

《Python编程:从入门到实践》_高清中文版

《Python科学计算》_高清中文版

《深度学习入门:基于Python的理论与实现》_高清中文版

《深入浅出数据分析》_高清中文版

《Python编程:从入门到实践》_高清中文版


原 六年程序生涯

工作六年对一个程序员意味什么?在职位上:高级开发工程师?架构师?技术经理?or … ?在能力上:各种编码无压力?核心代码无压力?平台架构无压力? or … fuck?看着这些问号都心累。那么,六年你迷惘了吗?又走到了那个十字路口?

六对我来讲总是一个特殊的数字,六年中一直想对自己的程序员生涯做一个回顾,总是有各种的借口飘然而过就到了几天。毕业六年,大学同学们基本上都走在了不同的路线,也走进了完全不同的生活,能在六年冲出来的现在也都小有了名气,为什么相同的学校相同的专业却走向了不同的方向呢,且听我慢慢道来。

每个人程序员的经历都是一个故事

如何入坑

在XX的培训班上有一次我对大家这样介绍:我来自一个二流的本科院校中的一个三流专业,学校本来就是师范类的院校,自然不是特别受欢迎,我们是师范学校里面的非师范专业,而且是学校刚开的专业挂在数学系更加非主流,专业就是:信息与计算科学。我听说有的学校这个专业是计算机系的,不知准确信息。但基本上都是学数学的,带着学习一点计算机,当初报考这个专业也是因为这个名字,看起来很有科技含量,多少农村孩子都是这样报考专业的!!!

大学生活

一般大家回顾都要说说大学生活,我的大学一年一句话来总结,大一基本上都是在网吧度过的,大二基本上都是在篮球场度过的,大三基本上都和女朋友一起过的,大四基本上都在找工作中度过,导致我走向编程这条道路的经历基本上都在大四了。放一张当时大学的图片,当然现在都已经发生了很大的变化。

dx

有几个原因导致了我最后选择去培训机构培训Java编码,第一、对计算机比较感兴趣,大学数学课程基本没听过,都是考试应付,但对相关计算机课程很感兴趣,但学的太浅了,我不讨厌数学,但是让我想到学这么多微积分、线性代数…毕业后有个鸟用,就泄气了,没有一点动力。第二、真的不好找工作,专业几乎没有对口,同学干啥都有,有的走向了培训、当了教师,有的做了文员、公务员、银行职员,有的做了交警、还有公安,但最让我惊奇的是有一个当了律师,太惊讶了,我感觉比编程可困难多了,基本上都是各自找自己的出路。第三、大三暑假那会参加了数学建模竞赛,在小组中我负责编程的部分,那时候用的MATLAB和C语言,随着不断的练习和使用更加验证了对软件的热情和理解,也只是觉得软件应该是一个朝阳行业,慢慢的去了解了入行的标准,找工作的过程中慢慢试着去接触了一些培训机构,但是看到1w左右的培训费用,我犹豫了,那时候的1w对我来讲太重了。

大四那年冬天,印象很深刻,跑遍了省会城市大小招聘会场,不是简历都过不了,就是么消息;最后到应聘上几家公司,但是和自己想象中差距太远,一个是培训机构当老师,没去;一个是做管培生,去了,我靠基本上跟传销一样,什么管培生就是卖软件,记得应该叫“红利软件”,就是跑到各个交易所里面去找大爷大妈,聊天要电话,让听讲座最后引导买软件,一套软件大概是3000左右,可以提成10%;早上7点上班,各种活动游戏,8:30出发,9点左右到交易所各种找人,看着眼睛发光的大妈大爷就是目标客户。下午5点左右回来,各种培训,然后开始根据话术打电话晚上10点回家,我们学校一共去了8个人吧,最后留下了一个我们都想到不到一个人,我们班一个文文弱弱的小女生,学习很好的那种,一干就是两年,真是人不可貌相呀,坚持了两周我就撤了。

南下深圳

为什么了去了深圳?几个原因,我老大(初中很好的朋友,初中毕业后当兵,然后南下深圳)在这里,万一不行还有一个投奔的地方。深圳应该是当时印象中南方比较发达的城市,希望可以见见世面,找找工作,对了那年还是非典,疫苗刚出来,只给大四的学生先用,那天还发着低烧,也没管直接就打了。小马是我们班的一个同学,关系比较好,听我说要去深圳,特别激动说,强哥咱俩一起去闯天下去 :),因为小马家境还不错,没有吃过太多的苦,从小都没出过省,还是有点担心,但是看着小马这么激动,恰好我也有一个伴,就欣然接受了。后来我先去的,看了情况还行,就打了电话叫了小马一起过来。那时候从西安到深圳为了省钱买了硬座,应该是做了将近30个小时左右吧,吃了N多筒的泡面终于到了深圳,南方人的普通话真是听不懂呀。对了,小马最终做了一名人民警察,这就是另外的故事了。

因为我先去的深圳,就先去了深圳人才大市场,当然了各种受挫。等小马来了以后我们就先进了龙岗的比亚迪工厂,我们分在了不同的车间,小马比较幸运去了电池车间,就是流水线,我分到了纸箱车间,大家可能平时觉得纸箱子没有啥,但是在没有成品之前,边缘几乎都跟刀子一样,没几天从手到胳膊全部是伤,但最重要的是我和我们车间的老大搞不到一起,整天吵架,有一次差点干了起来,那个车间老大后面瞬间站了两个人,那次之后起我就出来了。

听了老大的建议,我又去了龙华的富士康,有一个朋友接我,对我说那边大学生应聘一人还发一个电脑而且是做办公室的(车间里面的人都羡慕做办公室的,毕竟不用卖苦力;在厂里面一般工服有三种颜色:蓝领,就是普工或者技工身份进厂的;红领,就是质检,专门检查质量的,大部分从蓝领升上去;白领,一般就是大学生了做文职或者管理),我没去,我还是以普工的身份进的富士康,我不信我干不下去,最后又分到了观澜的一个小分厂里面做物流,对了就是富士康当时有名的第一跳,就在那个厂区。厂里面不像大家现在洋气的说996什么的,几乎没有假期,什么周末更别提了,早8点晚8点,半月白班,半月夜班。富士康在深圳还是福利比较好的一个工厂,包吃住用药等。

这个图网上找的,有点像当初那个屌丝的年华
dx

在工厂的这段经历让我明白了,我必须要依靠一个技能来养活自己。这个技能就是搞软件!

培训班

根据之前的了解我大概选了两家培训机构,一家就是野马XXX,另外一家就是XX内培训机构,价格都差不多,但野马有教师,X内是视频教学,当时感觉不能接受,不太靠谱。本来都拿着钱去野马那边交钱了,在付款的时候,财务说可以减免了一百元,跟我一直沟通的那位说政策搞错了,肯定不是这个。就因为这个原因,我感觉他们不够严谨,我说那我就先不报名了,然后就去了隔壁的X内看看,结果他们正在上课就让我试听了一下,里面全是大四的学生,我坐在后排听了一上午,虽然感觉还是跟不上,但是有那种建模学习的那种氛围,我就定了X内。后来我在X内都上课两周了,野马打电话说给我特殊减免3千元让我过去,最后没去,但是感觉水分真大。

其实X内当在西安的培训还挺扎实的,还考了sun的证书,其实也么啥用。开始从跟不上,到处请教别人,到慢慢的理解,写各种小游戏,到最后也有学员来问我问题。那时候周六、周天可以免费在培训机构学习,我几乎周末都在哪里,毕业答辩的前两天才回去,然后又过来,毕业典礼没有去,毕业体检舍友这个帮我测血压,那个帮忙测体重,毕业证书、学位证书舍友帮忙领。我的大四几乎和学校都没有关系。在X内认识了好几个朋友,工作到现在都联系着,有的去了华为,有的在外包,还有的搞了小公司。

培训机构承诺免费介绍工作,那时候的培训好像也没有让大家伪造什么工作经验,学校什么的,一般情况下只要你不是很烂,基本上都能找到工作。X内推荐了几家公司,自己也投了简历记得最后收到了2个或者3个offer,也记不得都有什么公司了,最后选择了去李嘉诚儿子的一家公司就是电讯盈科,这个公司那时候刚来西安,还算不错的公司,主要是电信方面的研发,可惜我再这公司也才呆了不到一个月。

工作西安

刚入这行还是比较周折,也差点进去了另一个方向,所幸最后走向了正轨。程序员都是第一年的工作不是特别好找,过了第一年后,后面就比较轻松了。刚进电讯盈科的时候我的心里状态还是没有调整过来,感觉还是在大学的那种状态,进去之后是淘汰制,一个月内培训oracle,两周淘汰一次人。其实我感觉自己太不会表现了或者其它吧,最终一个月底的时候我也被淘汰了,打电话给我姐说的时候,我姐说,关键人家一共20多个人就淘汰了2个人!其中就有你!对了培训的钱,借我姐夫的。我感觉很憋屈,但我还是不认可,我是最差的。但最终我还是需要面对再找工作的问题。

网上海投了N份简历,电话不多,面试了几家公司后,也收到了几份Offer一个小公司不交社保,1800;有一家外包华为2100正规缴纳社保,我去了华为外包。关于薪资我给大家说两个笑话:1、我当初培训的时候一个学员给我说,有一个朋友从这里出来后,第一份工作2000,跳槽后4000,再跳槽后6000,我们一群人心里都默默的崇拜着,想着这肯定都是大牛级别的人物;2、我毕业第一份工作预期是2000左右,然后我就幻想着以后每年能涨1000元我就满足了,到了30岁我就能拿快8000了,现在真到30了才发现现在的毕业生起步价也是这个数。

第一份工作

那时候我也在网上看了很多外包公司的种种不是,但我的选择不是很多,不管怎么样毕业了就不能再往家里要钱了,总得先挣钱吧。华为外包有一个变态的特点为了保密,不允许带U盘、手机等各种存储、通讯设备,上班后基本就和外界失联了。那时候是做无线上网卡的客户端,就是那时候往电脑一插就可以上网那种。每个人进来会分配一个师傅来带,比较幸运我来的时候分给了一个比较好的师傅,性格、态度,以及他工作的方式其实最后也都影响了我。

我们应该在研发二部,大概分了三个部门,大巴组,小巴组和定制组。定制组:就是不用写代码的那种,华为开发了一些工具通过工具可以改变客户端软件的logo,模块功能等,华为的软件真是遍布全球到处的客户都有,阿拉伯、非洲各种语言大部分的需求都是基本可以工具搞定;小巴组,就是需要改一些代码,但是工作量又不是特别多的那种;大巴组就是需要改动需要1月以上的需求。我当时分在了小巴组,大概有十几个人,其中也有很多硕士毕业的也被忽悠进来。最原始的代码都是印度阿三写的,我们都是在上面做二次开发,刚进去看了一个类代码有上万多行惊呆了,但是代码确实写的非常正规。没有什么架构文档给我们,但改动基本都是外层的皮肤了或者小按钮之类的。

加班非常多,但比较开心的是加班有工资,而且是按照国家标准来的,平时加班1.5倍,周六天2倍,假期三倍。这是我工作到现在最正规的加班制度了,工资只有2100,但通过加班可以拿到3000左右,加到2点都是很正常的事情,特别喜欢假期加班可以拿三倍工资,华为在西安包了N多大楼,当时在软件园三期,班车上百辆开出去还是挺壮观的。华为的中午休息文化,确实好,中午吃完饭熄灯大家都睡觉,中午趟在哪里睡一个小时,下午工作质量明显提高N倍。

我刚进去的时候客户端有两种一种是Java写的,一种是QT(C++的封装),慢慢的Java版本的都淘汰了,全部上线了QT。我从小巴慢慢开发了大巴需求,但到最后没有Java版本的需求了,全部用QT。Java组的大家都各种转型,有的去了另外一个js控制的项目组,我选择了留下来搞QT,开始学习C++,因为有C语言的底子,倒也不难慢慢的可以开始搞QT版本的小巴需求,但是最后我就纠结了,我以后到底是往Java方向发展呢,还是C++呢。后来终于想通了,我花了那么多钱培训java这样太亏了 ,于是选择了离职。那时候华为方的领导其实对我也特别好,还专门给了我两周时间不用上班去参加华为Java的培训,大家都带着华为的白牌子,我带着外包的黄色牌子,培训老师问了我好几次我是那个部门的,但最后我还是撤了。

放一张我们小巴组出游的照片
dx

第一份工作促成我从学生到职场的转变。

第二份工作

当时面试有意向的公司大概是两家,一家是做GIS系统关于地理信息的公司,另外一家是XX系统,主要是做思科代理,给思科做各种软件或者给思科的硬件去做集成方案的各种软件。我选择了后者,没有别的原因,后面这家工资给的高,我就这么实在。

刚进公司其实比较紧张,因为半年没有做Java了,每天各种学习,各种加班最后发现其实还可以,虽然半年没有搞了但问题也不大,公司用的是hibernate和Struts基本上都是以前用过的框架。第一个项目是,smart meeting智能会议,就是大公司预定会议的一套系统,大部分的工作都在前端,那段时间让我对js有很了很大的了解,因为预定会议的系统界面都是各种拖拽。第二个项目大概就是vozimate,就是给思科的IP话机上面做应用,就是通过电话可以查询股票了、天气预报了等等,我们的这些信息都是通过爬虫抓取第三方的,过一段时间就需要调整一下爬虫策略。第一次让我对硬件和软件交互有了理解,思科的IP话机当时还是蛮先进的视频通话,各种会议都是没有问题。

最重要的一个项目也是我几乎入职一直在搞的项目就是UC manager,就是通过思科的电话打完短途、长途、漫游、国际漫游、转接、会议等等,凡是和打电话相关都会有,其实就是相当于联通或者移动公司话费的计费系统,当然还有路线最优路由,统计等各种功能非常多,刚开始做一些小功能,到负责一个模块,到最后整个系统都是我来负责,直到我离职的最后一天,我都在做这个项目的最后一版计费优化。正因为这个项目到北京面试的时候得到了一个高薪的机会,这个下面再讲。

其实在这个公司里面,项目中规中矩,代码也是主流的框架和技术,一年多的时间稳扎稳打让我对大项项目框架和设计有了很多的认识,特别是爬虫什么的让我非常兴奋。那时候中午我经常看博客园的新闻,整天都是互联网公司怎么怎么了,但是西安基本没有一家正正经经的互联网公司,于是就有了去北京想法,刚好jerry也有这样的想法13年过年后,大家纷纷提离职,准备去帝都呼吸新鲜的雾霾。

记得是11年十一过后入职的,当天一起入职了四名同事,我什么要强调这个呢,因为这四个同事到现在为止,都成了我职场后关系最好的四个好基友,其中有一个女孩,但我们仍然这样认为。jerry、波仔和鸽子,我们四个各有特点,jerry就是那种极客精神,喜欢各种硬件、软件,做了好几个网站,创业几次,目前创业中;波仔,天生搞笑天王,唱歌天王,在生活中带来无限的乐趣,跟他在一起永远是欢笑不断;鸽子,是女汉子或者是逍遥着,天生喜欢流浪、喝酒,拉萨、云南、日本、台湾、英国各处流浪,永远给人一种激情满满的感觉。

我们甚至创建了自己的户外组织Flyever,有自己的官网,甚至印了自己的队旗,logo和口号:自由 梦想!每月组织去排山,腐败、各种活动。发工资了说今天活动一下吧,十几个人就去吃饭喝酒,晚上通宵唱歌;世界末日了说去庆祝下吧,这两天心情不好,去活动一下吧!找各种借口去腐败,爬了很多山,喝了数不清多少瓶的9度。这是曾经的官网www.flyever.cn

放一张我们当时一个活动策划的截图
fly

在放几张我们去过的地方

青海湖的太阳
fly

芦苇荡
fly

北上帝都

来到北京的时候,我身上只剩了3000快钱,1000多在分钟寺(现在已经拆迁)租了个公寓,买了些日常用品后就剩1千多了,我专门挑互联网公司来投简历,大概头了100份左右,找了10家去面试,一周内面试完拿到了5份offer,其中有一家给的特别高就是因为我以前做了UCmanager这个项目,他们公司刚好给爱立信做项目,缺少这样项目经验的人,我犹豫了很久,毕竟工资给的很高,但最后还是放弃了,进了一家第三方支付公司。

第三方支付公司

选择第三方支付公司的时候,其实我还不是特别了解这个行业,只是觉得支付应该是比较不错的。这家公司也是我现在公司的母公司,刚入职的时候感觉周围一大片全都是大牛!公司还管饭,感觉特别好,没过了几天,就被同事拉进了一个XX山炮群,又开启了胡吃海喝的时代,经常私下我们几个组织着去AA聚餐,各种吹牛,各种烧烤啤酒也别有一番风味,混熟了之后,才发现和我一样大家都是屌丝,有一次部门聚餐的时候,部门经理说,大家都举下手看看大家都是那个省的,结果几乎每个省都是一两个这种,看着来自五湖四海的同事在一起工作,也是一番景象。

刚来公司做的是,第三方支付的前置接入系统,当时公司每天交易额刚刚上亿,服务压力非常大,每天各种报警,我们就辅助从前置开始跟踪,慢慢的对业务有了了解,后来也写了专门的压测程序来跑。再后来开始负责公司官网的改版,收银台改版,到后来开始了解J8583,银行接入平台 慢慢的才对第三方支付有了一个整体的了解,13年底的时候慢慢的兴起了很多p2p,很多公司在做对接平台,那时候大家都不懂什么是p2p,我们也不懂,也是一边学习一边搞,项目持续做了很久,我带了两三个人来做后端。最后这个项目也没有做起来,因为我们还是不了解p2p公司到底需要什么,自己琢磨的东西还是不太靠谱。

14初的时候总监,偷偷告诉我要封闭去做一个关于金融的项目,想让我参加,没想到正是这个项目对我的职场有如此大的影响,所以说关键时候的选择非常的重要。紧接着没过几天,就开了几个车拉着我们去了四星级酒店开始封闭开发,后来方案定了使用PHP开发之后,我又撤了回来做平台接口层的开发。大约过了一个月项目基本完成了,大家回来后项目组因为一个老总出走,带走了一个团队,剩下的开发几乎都走光了,那时候其实我也找好了工作,新的公司待遇和环境都不错,领导找我谈话,想让我负责这个项目。我对领导说我先考虑一下,等我休假回来后给回复。那段时间太累了加了很多班,请了好几天假去了青海湖大玩了几天,朋友都建议我去新的公司,后来我考虑一下还是选择了留下。

hkrt

互联网金融

那个封闭的项目就是互联网金融,那时候互联网金融已经慢慢热了起来,14年我们上线的时候应该是最后的一波热潮了。直到今天我们公司在行业的排名都在20-60之间来回。

14年初的时候大家搞的p2p都是网页版,app端有几个公司有,但都很基础,当时公司人力有限,就面临一个选择先做APP还是网站的问题,其实APP的问题主要是通道的问题,当时快捷支付应用到P2P公司还是非常难的。最后领导还是拍板先上APP,大家就集中人力先做APP,最后证明这是个正确的选择,现在监控我们公司的交易,几乎百分之80来自APP,第一次感觉移动互联网的浪潮就是这样来的。

系统刚投产的那段时间,交易量火爆,最夸张的时候1000万的标的几秒钟就满了,虽然现在平台也是这样。但当时对我们来讲还是蛮震惊的。在交易量火爆的情况下,系统出现了各种问题,首先是秒杀的时候控制不住并发,有时候会出现超卖的现象,最后各种优化,通过memcahed锁解决了这个问题,紧接着服务器又因为流量太大扛不住了,于是又上线lvs做负载。期间各种问题不断,那段时间我几乎晚上11点之前没有回过家,每次我走的时候老婆还在睡觉,回来的时候她又睡着了,周末也是各种加班,总感觉自己见不到太阳,持续了很久,但是成长也是非常的大。

因为我们的前端是PHP写的我又逼着自己学习了PHP,从开始能看懂,到最后可以写一点。公司慢慢上线了官网,又增加了小网页(H5),各种分布式系统改造。做各种活动,和滴滴打车做活动、和河狸家做活动、和携程做活动等等,有一次一天注册了X千个用户,惊呆了,发现羊毛党来了,又是各种限制。在后来慢慢的有黑客盯上了我们,各种骚扰,DDOS攻击,SQL注入等等。反正是能遇到的问题我们基本都遇到了,每一次问题之后,我们系统就又健壮了一些。

再后来要做大数据分析,我们又开始启动golang+monggodb这套方案来做大数据,刚开始也很困难,但是大家对新技术的这种渴望战胜了一切;再后来上线了dubbo做SOA服务治理,到现在启动spring boot+cloud。我们的系统也从第一代平台开始到现在第四代平台更换中,对这四代平台做一个简单的介绍: 第一代平台,主要是集中式,以快速上线为目的;第二代平台主要是分布式改造,缓解各服务压力;第三代平台主要做服务端SOA治理,后台统一账户中心;第四代微服务化改造,已达到灰度上线、动态部署集中管理的目的。

我也从负责Java端,到负责整个技术团队,慢慢的在领导的信任下测试交给了我,再后来分公司独立后将运维也交给了我,于是成了整个分公司的技术负责人。这就是我的故事。未来仍然有更多的挑战,感谢我们团队的兄弟姐妹,感谢工作中遇到的所有同事和领导。

我特别喜欢一句话在这里分享给大家:

我的代码曾运行在几千万用户的机器上,作为一个程序员,还有什么比这更让人满足的呢?如果有,那就是让这个用户数量再扩大 10 倍。

zxjr

路漫漫,欢迎大家在博文下面回复自己个人的经历,以共勉!


作者:纯洁的微笑
出处:http://www.ityouknow.com/
码字很辛苦,转载请注明出处 :)


《算法导论 第三版英文版》_高清中文版

《深度学习入门:基于Python的理论与实现》_高清中文版

《深入浅出数据分析》_高清中文版

《Python编程:从入门到实践》_高清中文版

《Python科学计算》_高清中文版

《深度学习入门:基于Python的理论与实现》_高清中文版

《深入浅出数据分析》_高清中文版

《Python编程:从入门到实践》_高清中文版


猜你喜欢

转载自blog.csdn.net/chuasnpi/article/details/89398750
今日推荐