java技术的发展
在java开始流行起来之后,主要服务于企业家应用,例如ERP,CRM等等,这些项目是为企业内部员工使用,我们的思维是怎么用设计模式,如何封装代码。让开发人员关注到业务上去,系统也就那么几十几百号人用。
随着互联网的兴起,原本都是用PHP做的应用,随着互联网应用的业务复杂度,用户体量的增加,越来越不实用。然后开发语言开始转向java。
在2010年左右的盛行S2SH(struts2、spring、hibernate),随着互联网应用的深入,struts2在互联网部署的时候有严重的安全性问题,hibernate虽然有二级缓存这些设置,但是hql不是原生sql很难优化等问题,技术开始使用springmvc、spring、mybatis。
再随着用户体量的不断增加和业务的复杂程度的提升,淘宝开始使用dubbo的RPC框架,然后发展到springboot和springcloud的出现。我们渐渐的在互联网公司中引入分布式框架,直到分布式技术的渐渐成熟。
因为有需求,技术才不断的发展。技术都是方便业务需求的发展的。
业务复杂度的提高和用户体量的增加需要我们分布式如何应对
随着业务复杂度的提高,我们如果还是把程序维护在一个项目里面,不管是实体类的增加,JVM类加载的问题,性能的问题,项目复杂度的问题,这个时候需要我们对项目的复杂度进行拆解,也就是我们技术中说到的垂直拆分,随着我们在对整个系统进行拆分的时候遇到实际部署中遇到的一些问题,我们总结出DDD领域建模的方法论
随着用户体量的不断增加,我们的并发也在不断的升高。关于用户体量的增加,我们数据库的存储也随着增加,当一张表中数据量过大,我们在查询的时候,就会增加磁盘搜索的时间成本,造成一个查询很长时间出不来。为了不会在同一张表中放置大量的数据,我们需要分表的操作。最开始的时候的分布式,大约在12年13年这样我们都是对数据的主键或者对数据进行hash计算,求模分到不同的表中,但是这种行为代码的侵入性太大,后来出了mycat,但是mycat对求笛卡尔交集还有别的一些问题,在分库情况下求交集上经常遇到问题,后来出了spr