公众号

在某大型企业驻场开发问题总结

- - 阅 657

1、 研究MySQL+MyCat数据库分库分表,总共花了3周时间,从2017年4月25号到2017年5月15日

我2017年4月25号加入XXX项目组,加入后,就开始研究MySQL+Mycat数据库分库分表技术,自己在自己电脑(笔记本)上安装了MySQL数据库,怕环境测试不充分,还在阿里云上自费购买了阿里云MySQL云主机一个月,自己拆分了5个数据库,自己写了测试数据的脚本,生成了几十万条不同数据,分别插入到自己笔记本数据库、阿里云各个数据库,并撰写测试报告,最终得出结论:Mycat不能较好的支持跨库Join,基础平台部其实也知道Mycat不能较好的支持跨库Join,所以让我们自行百度搜索Mycat分库分表原则,又花了一定时间自学了一下mysql+mycat的分库分表规则。最终随着对XXX系统系统的复杂认识和该大型企业业务部门的变更,该研究不了了之。

2、 在业务不明确的情况下,写了3周的时间做XXX的API设计
时间:总共花了3周时间,从2017年5月8号到2017年5月29日
在研究MySQL+Mycat数据库分库分表技术的同时,又有部门(部门名称不知道)要求我们提供XXX到底要提供哪些基于微服务的API。我来该大型企业做顾问之前,对于XXX系统一无所知,可以说基本业务一点都不知道,开始到该大型企业,又先研究MySQL+Mycat数据库分库分表技术,也没时间看XXX业务系统,2周后(4月25号到5月8号),又不得不写XXX的API设计文档,即XXX到底要提供哪些基于微服务的API。
个人认为:XXX系统原目标规划是业务不修改的情况下,仅仅是做架构迁移,目标有两个:原有基于Struts2的经典j2EE三层架构迁移到微服务架构;2)原界面不支持Response,现在要支持Response。但是随着XXX系统逐步改造的时候,目标也修改为业务系统要发生比较大的变化,比如:Custom Report与Standard Report合并,History Search修改为Advance Search、用户管理的权限要发生根本性变化。在业务系统的业务目标根本不清晰的情况下,被迫先做API设计,个人认为是南辕北辙,API是为业务服务的,在XXX业务1)变化很大,没有明确下来2)个人对XXX业务目标也不是很熟悉的情况下,先做API设计,还花了3周时间一遍又一遍的修改,浪费了本该熟悉业务的时间,不得不混沌吞枣翻阅XXX以前的代码接口到底有哪些。


3、 与Dubbo集成做相关技术调研,花了5天
Dubbo个人认为是一个非常优秀的分布式服务框架,这个技术距离今天并不过时,可惜的是没有人维护了。在这个最大的issue存在的情况下,相关部门(不知道那个部门)又要求我们必须跟Dubbo做集成。即使是这样,我们认为Dubbo也值得投入进去,但是在随后的业务部门变更,XXX项目组再次成了技术选型的牺牲品,接下来负责XXX微服务集成的微服务部门不熟悉Dubbo技术,改用了Spring Cloud,使得我们在Dubbo上的投入再次白费了。

4、 ElasticSarch与XXX系统POC原型设计与开发,做了3周
平台组再开始之初,就要求XXX的订单查询,必须通过EalsticSearch,不能跟XXX的数据库直接打交道。
1) 但是在逐步分析了XXX系统的源代码和业务之后,XXX的的订单查询,非常复杂,是多个表(3个以上)之间的关联查询,而且XXX系统有两个Schema组成,一个是XXX Schema,对应XXX订单系统,另外一个是XXXAPP Schema,做用户权限认证用,这两个Schema之间的数据,是有交互的,原计划只有XXX Schema的数据才能进入ElasticSearch,使得我们不得不考虑把XXXAPP Schema的数据,迁移到XXX 的Schema下,但是这些数据是别的项目组维护的,有些改动量。
2) XXX的数据是从SQL Server到PostgreSQL,数据下发逻辑是先删除后增加,但是ElasticSearch的与数据库同步的开源技术,并没有实现数据Delete操作的实时监控,所以该大型企业自身也实现不了,结果造成该技术一直悬而未决,不得不用,又没有真正使用,话费了3周以上的时间。

5、 XXX项目招聘顾问花了2个月的时间却无结果。
时间从5月3号-6月25号
我是第一个进入XXX项目组的,XXX原计划再招聘2个Java开发顾问,从5月初,到6月底,我收到的85%的应聘简历都是成教、自考毕业的而且是专科学历的简历,花了2个月的时间沟通无果,剩下的资深技术顾问,对前台页面开发技术不熟悉,也不愿意做,直到6月26号2个合格的开发顾问才到位,XXX项目已经开始了2个月了。

针对这些问题,个人总结:
1) 技术栈分为三个层次:会使用,例如微服务,Spring MVC,Spring boot 、Spring cloud,docker,MQ,Redis、ElasticSearch等等,会按照网上readme和Guide下载下来,能安装并做简单Demo,也能在不复杂的业务系统中使用(但是XXX业务系统非常复杂);

2) 掌握住:真正能应用到具体项目中,能解决实际重大问题,例如数据库分库分表之后的跨库Join,数据库日志的实时监控,ElasticSearch的删除操作与数据库之间的实时同步;

3) 能创新(在解决重大问题中提出了自己的改进意见),例如分布式事务操作,跨数据库、MQ等的分布式事务操作。

会使用,掌握住,能创新,三个阶段,该大型企业80%基础技术部门还处于第一阶段,个别处于第二阶段,没有处于第三阶段的。与私有云、微服务相关的开源技术,是一个牵扯到几十项复杂技术的技术栈,需要很长时间的技术积累,该大型企业的相关技术部门,技术积累并不充分,却要求业务部门必须使用;也就是自己并没有真正掌握住这些技术,却要求其他部门使用,这就是问题之根本。

0

本文转载 " "

原文地址 " "

相关文章!
  • React即将入门了
    - 阅 59

    其实1年前就想入门React,后来一是React还是有些门槛的,二则现在这两个项目后端虽然使用了Spring […]

  • 不觉进入到这个项目已经半年了
    - 阅 325

    从2017年4月底,进入到这个跨国公司的这个项目,不觉已经半年了,半年来,项目中用到的技术,基本是以前积累,没 […]

  • 某大型跨国公司微服务技术选型总结
    - 阅 1,106

    不觉在该项目上投入了4个月了。对于该项目的技术选型,后端技术的改造是很容易的,由传统的Struts2架构修改为 […]