我爱编程程序猿改变世界技术干货

Java程序员如何学习架构

2018-06-06  本文已影响0人  朱潘

怎样从一位程序员进阶成为一名合格的架构师?这是很多刚刚成为程序员和已经工作三五年的程序员会经常问道的问题。

先来看看大型网站的架构演化路线

初始阶段 

应用和数据服务器分离

这一步主要还是把数据库服务器独立出去。

使用缓存 


本地缓存和分布式缓存,这一步主要还是使用本地缓存的多点,一般不会一下子就用到分布式缓存,当然有些系统会直接使用分布式缓存。将一些配置信息、热点数据缓存本地,降低数据库压力。

引申:缓存穿透、雪崩,缓存失效,一致性hash。

集群 

使用负载均衡通过集群减轻应用服务器的访问压力。

引申:会话管理。需要关注session是统一管理还是分配到集群中的某台机器。如果是某台那就可能有会话粘滞,如果随机一台,就可能需要需要会话统一管理。

数据库读写分离 

这一步应该细分下为主备-分离,我们现在的系统就是也只是主从备份,没做分离。现在的系统开发,上面这几步都会一步到位,不会慢慢来了。

引申:分离后数据的一致性。

cdn和反向代理

做这一步主要还是把一些请求资源如图片和js往客户端推。缓解后端压力的同时,加速客户端响应。

使用分布式文件系统和分布式数据库系统 


感觉使用分布式文件系统主要是处理一些小文件存储。数据库数据量大了后一般都会对业务分库,服务器独立部署,各业务库再独立演化拆分分库分表等。

引申:数据库分布式后,就需要统一的数据访问组件隔离底层,其实在数据库主从后就需要,只是到这一步后需求更迫切。

使用nosql和搜索引擎 

搜索功能对于互联网系统尤其电商业务重要性不言而喻。使用nosql做离线分析和日志等,我们之前是利用hbase做订单的二次营销。

业务拆分 


不同的业务,不同产品线,然后应用的独立部署。

从系统的新建到后期的数据库的读写分离等过程,业务的拆分应该是一直都存在的,只不过到一定时期后,这个需求更加迫切而已。

引申:系统间,走消息还是rpc等。

分布式服务 

可以看到,随着互联网行业的发展,网站系统越来越复杂,想要学习架构,就必然离不开分布式服务的学习!

而对于分布式的学习,小编就不在这里班门弄斧了,我们有更好的老师,下面推荐一本分布式服务的学习书籍。

《分布式服务架构:原理、设计与实战》以分布式服务架构为主线,重点介绍了保证服务化架构的一致性、高性能、高可用的解决方案和至佳实践,并介绍了微服务架构中倡导的容器化过程,以及敏捷开发和敏捷上线的流程,对分布式服务系统架构设计的核心要点逐一介绍,对重点主题配有代码、设计文档和开源项目,每个主题独立成章,让读者不但可以了解大规模分布式微服务系统是怎么设计的,还可以在了解原理的同时,了解作者在实际项目中积累的至佳实践和模式,大大提高互联网项目的实现效率。要点如下。

分布式架构学习要点

√介绍服务化和微服务架构的背景和演化。

√介绍微服务中的常见问题和解决模式。

√提出解决分布式系统一致性问题的有效方案和设计模式。

√介绍酸碱平衡和至终一致性等理论,对分布式服务间出现的服务超时问题给出解决办法。

√提出非功能质量架构设计的方法论,举例说明系统的性能和容量的预估,并介绍压测的方法论和至佳实践。

√提出服务化的日志系统的技术选型依据和大数据日志系统建设的原理、设计与实战,包括ELK等流行框架的介绍与使用。

√详细介绍基于调用的APM系统的设计与实现,并给出实现的至佳实践。

√介绍线上应急和技术攻关的流程和重点,并总结Java服务化系统应急中需要使用的Java虚拟机命令、Linux命令和定制化开发的命令等。

√服务化系统容器化的过程分析和至佳实践。

√服务化系统中敏捷开发的过程和工具。

作者介绍

李艳鹏,现任蚂蚁金服高级技术专家,著有《分布式服务架构:原理、设计与实战》和《可伸缩服务架构:框架与中间件》,是【云时代架构】技术社区的发起者,曾经在易宝支付、花旗银行、甲骨文、路透社、新浪微博等大型IT互联网公司担任技术负责人和架构师的工作,现专注大规模高并发的线上和线下支付平台的应用架构和技术架构的规划与落地,负责交易、支付、渠道、出款、风控、对账等核心支付系统的设计与实现,在移动支付、聚合支付、合规账户、扫码支付、标记化支付等业务场景上有产品应用架构规划与落地的实践经验。

加入我的qq群和大神李艳鹏无缝沟通,qq搜索群号727096055入群就可以了,还有多位大神在群里为你答疑解惑。

文末福利,戳二维码回复:

“加群”:阿里大神和资深HR为你答疑解惑

“粉丝群”:加小编微信拉你进粉丝群

“视频”:100G+免费学习视频,近期有更新

“书籍”:1000+册技术电子书,最近新增30本电子书

上一篇 下一篇

猜你喜欢

热点阅读