美文网首页
多人开发的大项目是什么样子的

多人开发的大项目是什么样子的

作者: Atlas_lili | 来源:发表于2019-06-07 17:08 被阅读0次

    自学前端的小白从来都是个人开发,最多上传一下git仓库。有一天如果我需要一个帮手,[好吧]组件化,让他不要动我的,开发完了再合。。。

    前不久进入了某厂项目组,亲身体验了几次繁复的开发流程。感觉自己像一个茹毛饮血的原始人学习文明社会的规则。

    开发前的准备

    涉及真正的多人开发,多数人都是平等的开发者,“我为什么要帮你合代码,帮你调试”组长 更懒得管这些。所以用GIT来规范化流程,大家来维护一套代码,每个人为他的提交负责。那针对开源项目和企业项目两个场景,用git做库管理有什么区别呢?

    开源项目
    开源项目开发流程.png

    开源项目个人开发者没有操作项目代码库master的权限,如此操作在项目代码库每个人的每一次优化只有一次记录,记录树比较清晰。

    企业项目
    企业项目开发流程.png
    企业项目个人开发者有权限操作master分支,特点就是每一次优化的和并提交将其中的无用commit都携带(比如test1、test2)。master的权限带来巨大改变,因此需要一些约束。在master分支git merge 分支a的时候一定要慎重,因为master的代码随时可能被张三李四等人获取,如果蕴藏一个影响业务逻辑的bug。。。。对于无用的commit要在merge前rebase清理干净。

    测开利器CI

    CI全称Continuous Integration,中文名持续集成,还是不知道是啥。它主要分为自动化构建和单元测试,两部分,我主要体验了自动化构建。我们拿到了一个项目代码要下载依赖、dev开发、build打包。。。这是在我们的开发电脑上,如果是一台素昧平生的测试服务器呢?OK,远程连接然后做这些,那前后端联调要部署很多次的,如果是项目上线面对服务器群呢?CI可以帮我做这些,我需要的就是修改配置文件,来告诉CI我这次想在远程对项目做什么(比如更新哪个目录的内容、静态资源打包吗?映射到本地吗?),然后git push 一下,CI就开始工作了,中间如果出现错误CI主动发邮件提示我。

    发布上线

    这几天遇到的名词,总结一下。
    全量发布:就是我有20台服务器,20台服务器都发布。
    灰度发布:就是我有20台服务器,发两台体验一下,比例由大家讨论指定。
    无损发布:这是比较难解释。我用银行柜台举个例子。银行正常运转,每一个柜台都有人排队,此时经理要找每个柜员谈重要的事(比如季度考核)。所有柜员一起溜了,银行就关门了。需要一个平滑的策略让柜员逐个撤出前台,无损发布就在做这个。A柜员前面不要增加排队的人了,处理完目前几个人的业务就可以撤了。
    还有关于发布顺序的不同场景的处理不同:
    要增加一个按钮,后台也增加一个服务:要确保用户看见按钮的时候是可以点的,所有后台服务先上线,前端服务后上线。
    要删除一个按钮,后台也下线一个服务:要确保用户看见按钮的时候是可以点的,所有前端服务先上线,后台服务后上线。

    静态资源更新

    下面的部分和工作流程没有关系,只是介绍静态资源更新变成现在这个样子的原因。

    index.60a31.js中间的一串字符是什么?干什么用?

    1. 茹毛饮血

    <script src="//xxx/xx/index.js"></script>
    上面的语句再常见不过了,我将有这句的html文件放在云服务器上,做好静态资源分发,index.js就到手了。
    然而对于公司(要恰饭的),每一次用户请求都发送一次,不能这么挥霍宝贵的带宽,因为运营商是按峰值收费的。

    按峰值收费.png
    解决这样的问题运用http缓存就好了。把一次完整的请求变成协商缓存304或者直接变成本地缓存的200,过期时间足够长。
    那么怎么更新资源呢?
    1. 刀耕火种


      image.png

      每一次在我们的资源后面加上版本号就好了,那么问题是如果三个文件我只改了一个,要全部更新吗?要解决这种问题,必须让url的修改与文件内容关联,也就是说,只有文件内容变化,才会导致相应url的变更,从而实现文件级别的精确缓存控制。因此利用 数据摘要要算法 对文件求摘要信息,摘要信息与文件内容一一对应,就有了一种可以精确到单个文件粒度的缓存控制依据了。好了,我们把url改成带摘要信息的:


      image.png
    2. 农业文明
      大型的互联网公司是有CDN保管静态资源的,而且是CDN网络(想象通信分级网络、计算机网络,长得差不多)。而有的CDN是不识?后面的内容的。而且后面会提到CDN静态资源更新,有的运营商手里把持CDN,他的CDN还总不更新。


      image.png

      所以终于变成了index.60a31.js这还带来了另外一个好处,index.js有能力变成多个版本,老用户也能找到合适他的资源。

    问:那CDN上的东西不是越积越多,清一下换成新的呗?
    答:会越积越多,但是存储较带宽还是很廉价的。我们一般不尝试删CDN的东西,因为有人需要它,一个js css 才多大。

    CDN更新策略

    前面说CDN有一组网络,最上面的是源CDN,下分各级
    回源策略:用户访问时逐级上查,向源的方向探查,获取更新。
    推送策略:源CDN发通知,使各级CDN来获取更新(大版本会如此)。

    相关文章

      网友评论

          本文标题:多人开发的大项目是什么样子的

          本文链接:https://www.haomeiwen.com/subject/wymmxctx.html