一个五年架构师为什么基本年薪酬可以达到50万?
2018-01-10 17:47
761 查看
架构师,我想很多人都知道,其实该职位头衔在最早的IT领域是没有的,它是近些年来由互联网的发展所引发的需求,因为现阶段的数据量及高并发的活跃好动,引起了不少传统的技术人员的力不从心,企业愈发关注到了系统架构的重要性,所以不同行业开始招募架构技术人员,架构师就诞生了。
架构设计的条件
以下三个条件不适合做架构设计
对架构不感兴趣,但又迫于需求;
入IT行业,年限小于4年的;
主观能动性弱,又安于现状的;
更好的拓展、维护及性能优化;
更好的适应企业业务灵活的推进;
更好的适应大数据的冲洗和应对;
更好的稳定性、低成本及快速迭代;
另外,构建好的架构虽然可以运行,但是性能需要跟起来,否则架构设计会适得其反,增加不必要的工作量,那么下面就详细介绍下架构设计的策略。
本篇主要是介绍架构设计的思路及应用的核心技术,供在架构设计的同学参考借鉴哦!有想了解更多的加Java高级架构群:671017482
在线购物、在线支付或货到付款;
购买商品后,客户可以与客服沟通;
购买商品过程,物流的管理及跟踪;
收取到商品后,商品、物流评价打分;
客户的需求为最高,也代表了企业的核心需求,当然,企业需求还包括其它很多非功能性需求,具体请查看需求梳理部分。
1、业务拆分目的
为了解决各个模块子系统间的耦合、维护及拓展性;
方便单独部署子系统,避免集中部署导致一个出问题,全部不能用;
分配专门的团队,负责具体的子系统,最大化工作效率安排;
应对大数据,高压力时,保护核心子系统正常使用;
2、业务的架构图
在上面的业务架构图中,将核心和非核心业务进行拆分,同时每个系统都要独立部署实现,做到大数据量压下,各个系统独立运作,提高可用性,必要时可以暂停掉非核心系统的资源开销,保证核心业务正常为用户服务。
1、基本的架构设计
记得很早的时候,很多中小企业所采用的架构设计十分简单,基本使用一台服务器来满足一切需求部署,比如:一台服务器同时用作应用部署、数据库存储以及图片存储等,不料的是待用户数据达到50万以上,系统出现很多性能问题,尽管对数据库和程序做个各种性能优化,结果仍无明显改善,架构如下:
后来,IT程序猿发现图片的读写严重影响了系统性能,并将图片单独存放在独立服务器中,并且在架构中引入了Cache中间件,比如:Memcache,这种做法是可取的,而且比原来性能提高了1-2个性能级别,架构设计如下:
2、初级的架构设计
前几年,一般的电商网站的做法是选用三台服务器,一台部署应用,一台部署数据库,一台部署NFS文件系统,做到将各个规模庞大并耗用性能的部分剥离到不同服务器设备,再配备必要的缓存中间件,基本可以满足近1000万的数据量,具体的架构图如下:
但是,目前主流使用的网站架构已经不同,大多采用集群的方式来实现负载均衡和高可用性,架构可以是下面的样子:
注意:
如果涉及到多台网站服务器的话,就会存在Session如何同步的问题,一般也是最为常用的做法,就是使用Cache中间件来存储和管理Session信息。
3、优化的架构设计
这里为解决高并发,高可用的大型电商网站的架构设计方案,主要采用了分布式、集群、负载均衡、反向代理、消息队列及多级缓存技术。该架构设计方案,是现今比较流程的大型电商网站采用的架构模式,比如:淘宝、京东等,也许会有细微不同的地方,但大同小异哦!具体的架构图方案如下:
好了,电商平台的架构设计就介绍到这里,
架构设计的条件
以下三个条件不适合做架构设计对架构不感兴趣,但又迫于需求;
入IT行业,年限小于4年的;
主观能动性弱,又安于现状的;
架构设计的优势
更好的梳理业务的结构体系;更好的拓展、维护及性能优化;
更好的适应企业业务灵活的推进;
更好的适应大数据的冲洗和应对;
更好的稳定性、低成本及快速迭代;
架构设计时候需要注意的地方
架构设计需要注意的地方,不是怎么把架构搭建起来,而是必须根据业务需求,严格分析,实现该需求需要什么技术会更好及更长远发展的考虑;另外,构建好的架构虽然可以运行,但是性能需要跟起来,否则架构设计会适得其反,增加不必要的工作量,那么下面就详细介绍下架构设计的策略。
本篇主要是介绍架构设计的思路及应用的核心技术,供在架构设计的同学参考借鉴哦!有想了解更多的加Java高级架构群:671017482
平台的需求
客户需求在线购物、在线支付或货到付款;
购买商品后,客户可以与客服沟通;
购买商品过程,物流的管理及跟踪;
收取到商品后,商品、物流评价打分;
客户的需求为最高,也代表了企业的核心需求,当然,企业需求还包括其它很多非功能性需求,具体请查看需求梳理部分。
平台的业务架构
根据业务的需求进行子系统模块划分,可以划分为商品子系统、购物子系统、支付子系统、物流子系统、客服子系统、评论子系统;而非核心需求可拆分出客服子系统、评论子系统及接口子系统。另外,根据各个子系统的核心等级,可拆分出核心子系统和非核心子系统,前者包括商品子系统、购物子系统、支付子系统及物流子系统;后者,则包括评论子系统、客服子系统及接口子系统。需要注意的是一般大型电商平台的物流系统是单独分离出来的系统(入库、出库、库存管理、配送管理及货品管理),而这里划分为子系统的主要目的是为演示核心架构,本架构中物流子系统一般作为对接和管理独立子系统的对接模块哦。1、业务拆分目的
为了解决各个模块子系统间的耦合、维护及拓展性;
方便单独部署子系统,避免集中部署导致一个出问题,全部不能用;
分配专门的团队,负责具体的子系统,最大化工作效率安排;
应对大数据,高压力时,保护核心子系统正常使用;
2、业务的架构图
在上面的业务架构图中,将核心和非核心业务进行拆分,同时每个系统都要独立部署实现,做到大数据量压下,各个系统独立运作,提高可用性,必要时可以暂停掉非核心系统的资源开销,保证核心业务正常为用户服务。
平台的技术架构
在上面业务架构图基础上,我们需要一个技术架构的演变过程,一切只为满足用户的体验和支撑为前提,所以技术架构的搭建不是一蹴而就的,而是随着业务的不断衍变,系统的架构会逐渐完善更新,以实现应对业务数据量的冲击。1、基本的架构设计
记得很早的时候,很多中小企业所采用的架构设计十分简单,基本使用一台服务器来满足一切需求部署,比如:一台服务器同时用作应用部署、数据库存储以及图片存储等,不料的是待用户数据达到50万以上,系统出现很多性能问题,尽管对数据库和程序做个各种性能优化,结果仍无明显改善,架构如下:
后来,IT程序猿发现图片的读写严重影响了系统性能,并将图片单独存放在独立服务器中,并且在架构中引入了Cache中间件,比如:Memcache,这种做法是可取的,而且比原来性能提高了1-2个性能级别,架构设计如下:
2、初级的架构设计
前几年,一般的电商网站的做法是选用三台服务器,一台部署应用,一台部署数据库,一台部署NFS文件系统,做到将各个规模庞大并耗用性能的部分剥离到不同服务器设备,再配备必要的缓存中间件,基本可以满足近1000万的数据量,具体的架构图如下:
但是,目前主流使用的网站架构已经不同,大多采用集群的方式来实现负载均衡和高可用性,架构可以是下面的样子:
注意:
如果涉及到多台网站服务器的话,就会存在Session如何同步的问题,一般也是最为常用的做法,就是使用Cache中间件来存储和管理Session信息。
3、优化的架构设计
这里为解决高并发,高可用的大型电商网站的架构设计方案,主要采用了分布式、集群、负载均衡、反向代理、消息队列及多级缓存技术。该架构设计方案,是现今比较流程的大型电商网站采用的架构模式,比如:淘宝、京东等,也许会有细微不同的地方,但大同小异哦!具体的架构图方案如下:
平台架构的总结
这里主要总结的是优化架构,架构按层次结构罗列组织,共分为四层,层次分工明确,高拓展,低耦合,负载均衡、集群、分布式及缓存等技术的使用,架构如下:好了,电商平台的架构设计就介绍到这里,
相关文章推荐
- 只有2~3年左右的开发经验,为什么年薪就可以达到50万+?
- 一个参数既可以是const还可以是volatile吗?解释为什么
- 如题,既然直接对一个实例发送方法名就可以调用这个方法,那为什么还要使用performSelector:去调呢?两者u有啥区别
- Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么?
- 为什么ASIC的频率可以达到GHz,而FPGA只能达到几百MHz?
- JavaScript eval() 为什么使用eval()是一个坏主意 什么时候可以使用eval()
- 为什么不能从子函数中返回临时对象的指针和引用,却可以返回一个临时变量的值
- 为什么普通U盘都只有一个分区,而移动硬盘却可以有多个分区
- java源文件当中可以有多个类,但是为什么只能有一个public类呢?而当这个类被修饰为public的话,为什么源文件名必须要与类名相同呢?
- TCP server 为什么一个端口可以建立多个连接?(网络讨论)
- Java 有几程方法可以实现一个线程?用什么关键字修饰同步?stop()和suspend()为什么不推荐使用?
- 有些JS为什么不可以单独放在一个js文件里面
- 为什么memcpy要返回一个void*啊,没有返回值不可以吗
- java源文件当中可以有多个类,但是为什么只能有一个public类呢?
- 一个票贩子的自叙 可以解释为什么买不到票。
- 对Interface的一点理解——为什么一个简单的方法声明可以做那么多的事
- server2003 域控制器为什么随便用一个已经建立的用户名都可以进入任何一台机器
- 我为什么需要你来参与这样的一个创意计划?”我自己可以完成它…
- 【郝斌数据结构自学笔记】53-56_一个函数为什么可以自己调用自己_递归必须满足三个条件_循环和递归的比较
- 抽象类实现一个接口为什么可以不用都实现接口中的方法