• BAT解密:互联网技术发展之路(5)- 开发层技术剖析


    BAT解密:互联网技术发展之路(5)- 开发层技术剖析

    1. 开发框架

    在系列文章的第2篇“BAT解密:互联网技术发展之路(2)- 业务怎样驱动技术发展”中我们深入分析了互联网业务发展的一个特点:复杂性越来越高。

    复杂性添加的典型现象就是系统越来越多,不同的系统由不同的小组开发。

    假设每一个小组用不同的开发框架和技术,将会带来非常多问题。典型的问题有:

    1)技术人员之间没有共同的技术语言,交流合作少

    2)每类技术都须要投入大量的人力和资源和熟练精通

    3)不同团队之间人员无法高速流动,人力资源不能高效的利用

    所以,互联网公司都会指定一个大的技术方向,然后使用统一的开发框架,比如Java相关的开发框架SSH、SpringMVC、Play,Ruby的Ruby on Rails,PHP的ThinkPHP,Python的Django等等。使用统一的开发框架可以解决上面提到的各种问题,大大提升组织和团队的开发效率。

    对于框架的选择,有一个总的原则:优选成熟的框架,避免盲目追逐新技术!为什么呢?

    首先,成熟的框架资料文档齐备,各种坑基本上都有人踩过了,遇到问题非常easy通过搜索解决

    其次,成熟的框架受众更广,招聘时更加easy招聘到合适的人才

    第三,成熟的框架更加稳定,不会出现大的变动,适合长期发展

    以我亲身经历的一个反例为例:我们使用了Play 1作为Java开发框架。由于它是轻量级的Java开发框架,但没想到Play 2直接改为scala语言开发,Play 1的架构演进停滞。而我们又不能切换为Play 2,结果就导致仅仅能一直用Play 1。有新的需求仅仅能自己开发。




    2. server

    开发框架仅仅是负责完毕业务功能的开发,真正可以执行起来。给用户提供服务,还须要server配合。

    独立开发一个成熟的webserver,成本非常高;且业界又有那么多成熟的开源webserver,所以互联网行业基本上都是拿来主义,挑选一个流行的开源server就可以。牛逼一点的公司,可能会在开源server的基础上,结合自己的业务特点做二次开发,比如淘宝的Tengine,但一般公司基本上仅仅须要将开源server摸透,优化一下參数。调整一下配置就差点儿相同了。

    选择一个server主要和开发语言相关。比如:java的有Tomcat、Jboss、Resin等。php/python的用nginx。当然最保险的就是用apache了,什么语言都支持。

    有的人可能操心apache的性能之类的问题,事实上不用过早操心这个。等到你的业务真的发展到apache撑不住的时候再考虑切换也可以,那时候你有的是钱,有的是人,有的是时间。




    3. 容器

    容器是近期2年才開始火起来的。当中以docker为代表。在BAT级别的公司已经有较多的应用,比如腾讯:腾讯万台规模的Docker应用实践;新浪微博:微博红包:大规模Docker集群实践经验分享 等等。

    传统的虚拟化技术是虚拟机,攻克了跨平台的问题。但由于虚拟机太庞大,启动慢。执行时太占资源,在互联网行业并没有大规模的应用;而docker的容器技术,尽管没有跨平台,但启动快。差点儿不占资源,推出后立马就火起来了,估计docker类的容器技术将是技术发展的主流方向。

    千万不要以为docker仅仅是一个虚拟化或者容器技术,它将在非常大程度上改变我们眼下的技术形势:

    1)运维方式会发生革命性的变化:docker启动快,差点儿不占资源。随时启动和停止,基于docker打造自己主动化运维、智能化运维将成为主流方式

    2)设计模式会发生本质化的变化:启动一个新的容器实例代价如此低,将鼓舞设计思路朝“微服务”的方向发展。

    比如一个传统的站点包含登录注冊、页面訪问、搜索等功能。没实用容器的情况下。除非有特别大的訪问量。否则这些功能開始时都是集成在一个系统里面的;有了容器技术后。一開始设计就行将这些功能依照服务的方式设计,避免兴许訪问量增大时又要重构系统。






  • 相关阅读:
    详解git pull和git fetch的区别
    什么是移臂调度,什么是旋转调度?
    常用的资源分配策略有哪两种?在每一种策略中,资源请求队列的排序原则是什么?
    什么是虚拟资源,对主存储器而言,用户使用的虚拟资源是什么?
    进程调度的任务是什么,线程调度的任务是什么?
    用于进程控制的原语主要由哪几个,每个原语的执行将使进程的状态发生什么变化?
    试说明进程创建的主要功能是什么?
    什么是线程,线程与进程有什么区别?
    什么是进程互斥,什么是进程同步,同步和互斥这两个概念有什么联系和区别?
    n个并发进程共用一个公共变量Q,写出用信号灯实现n个进程互斥的程序描述,给出信号灯值得取值范围,并说明每个取值范围的物理意义。
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/6722014.html
Copyright © 2020-2023  润新知