分布式集群的架构的架构师,也有着较高的要求,而互联网上受人敬仰的架构师大多属于这类。你也可以认为这才是真正的架构师。
群的扩容原则就是一个人干不完的活多个人一起干,让服务器与服务器之间,进行分工与协作。
之前所展示给大家的所有架构,都是基于单服务器架构来设计的,如果只有一台服务器,无能我们怎样花钱来升级他的硬件配置,我们会发现很快将无法进一步扩容。最好的CPU,最大的内存条也是有限度的,因此采用集群架构,才是解决问题的正确方法。
如果只是从功能实现来说,能够按照第7张图完成架构设计的架构师,已经能满足需求。但是在实际运营的项目中,除了有功能需求以外,还要有质量需求,比如:网站的负载能力,网络并发连接数,系统的数据吞吐量,项目是否具有扩容能力等。
通常需要我们通过服务器发起请求调用第三方的API,并且为第三方的平台保留回调的接口,因此在制作这样的应用程序开发的时候,架构师除了要掌握移动互联网络的技术外,还需要对第三方提供的功能与规范以及相应接口有充分的了解。
它和6张图比较类似,但多出来几块。我们把横线以上的部分叫服务端,横线以下的叫前端。我们在移动互联网络时代,经常会涉及到自己的平台与第三方平台的交互,我们的应用在接入支付宝,微信,微博等功能后,还会涉及到与第三方平台的功能交互。
服务器端提供数据交互服务,并编写相应的接口,移动端进行接口调用,并完成界面数据填充以负责用户交互,即便是移动端浏览器,也应采用这种方式来交互。
服务器端的结构没有太大的变化,但是软件设计的方式产生了变化,原本B/S架构中由服务端向浏览器输出相应的html,css,js等静态内容即可,但如果涉及到移动互联网应用开发,我们会将我们的应用程序规范化,把前端和后端完全区分开来。
从2010年以后,智能手机在国内大量普及,几年时间诞生了数百万的App与手机游戏,往往一个项目既拥有自己的网站,又拥有独立的APP,而且作为一个整体的系统,iOS,安卓,与网页的数据应该是一致的。
这样B/S的架构师难度相对来说比C/S架构师低很多,并且有诸多的成熟的解决方案,比如:java的javaee架构,微软的asp.net架构,完全开源的lamp架构,都是很成熟的解决方案。
这样架构的优点在于因为存在大量的成熟的解决方案,只需要一台可连入网络的服务器,就可以让整个系统运转起来。开发速度快,运营成本低。这种解决方案被广泛接纳。所以做这样架构的程序员数量很多,也因此往往不被当做架构师来看待。但是做这样架构的应用程序设计也架构设计中的一种。
服务器端同第7张,第8张可以是一致的,具体是选择哪个服务器的架构,取决于项目的规模。
项目初期用户量少,可以选择单服务器架构,如果项目后期服务器负载压力过大,可以重构为分布式集群架构
第9张图的重点在于项目前端,我们来看前端的技术架构图,这里所画的是市面所流行的混合APP的架构。
著名的混合APP应用有很多,比如说支付宝手机客户端,还有Facebook,这些应用都是采用混合APP架构设计的。
混合APP应用使用html,和css打造用户界面,无论是在浏览器,微信端,还是在APP中,都是如此。因此他具备B/S应用程序的优点,
可以在服务器端更新应用内容,并且让应用在ios,安卓,浏览器端保持高度一致性。
利用单页web APP开发技术,能够让网页程序像原生应用一样流畅,而web APP的缺点在于,网页js程序无法调用手机硬件功能,
但是混合APP架构可以通过微信sdk,微博sdk ,iOS bridges,安卓bridge是等方式来获取微信APP,微博APP以及手机硬件的功能。
因此混合APP架构同时具备了web APP与原生应用的优势,成为了市场上主流的移动应用架构设计方法。
跨平台兼容性好,开发成本低,开发速度快。逐步取代了大量的原生应用。
比如分布式服务部分,如果全盏工程师,可以使用类似Laravel框架这样的全盏框架解决本地服务,webservice ,消息队列等问题,
但架构师则应该能深入了解其中原理,并做出相应设计
全栈工程师只要加深各个领域知识深度,很容易向架构师方向发展
当然学习的同时也应该注意误区,很多人以为全栈是学习linux+php+h5+移动端,这是典型误区
因为在以往的大公司大团队时代,学科越分越细,因此无论大学课程还是培训机构,此前都是按专业和学科划分
如果学linux,那么从组网做网络配置,搭建文件共享或者邮件发送,web服务等都需要学习和掌握
学h5的话,webgl游戏开发,网页开发都有学习,其实对于全栈或者架构师发展来说,这样并不好