Java程序员如何学习架构

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

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

初始阶段

应用和数据服务器分离

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

使用缓存

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

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

集群

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

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

数据库读写分离

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

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

cdn和反向代理

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

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

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

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

使用nosql和搜索引擎

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

业务拆分

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

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

分布式服务

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

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

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

分布式架构学习要点

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

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

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

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

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

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

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

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

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

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

作者介绍

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

原文发布于微信公众号 - java工会(javagonghui)

原文发表时间:2018-06-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏跟着阿笨一起玩NET

系统架构师-基础到企业应用架构-客户端/服务器

本文转载:http://www.cnblogs.com/hegezhou_hot/archive/2011/11/07/2238983.html#

21410
来自专栏架构师之路

feed流拉取,读扩散,究竟是啥?

答:微博,微信朋友圈,Pinterest是典型的feed流业务,系统中的每一条消息就是一个feed。

37130
来自专栏美团技术团队

孵化业务快速落地与优化

海外酒店是酒旅事业群第一个孵化的业务,从2016年9月份开始到现在已经半年多的时间。在业务后台搭建、成长、优化过程中,经历了很多的思考与选择。 主要分为下面几个...

45990
来自专栏数据和云

必读推荐:深入解读Oracle 18c对于DBA的影响及应对措施

? Joel Perez Oracle ACE Director,云和恩墨高级云技术专家 "DBA 将要失业了吗? 当引入自治数据库之后,就永远不需要...

47190
来自专栏云资讯小编的专栏

腾讯云发布无服务器云函数,较云主机成本低约70%

4月26日,腾讯云宣布,正式开放国内首款FaaS(Function as a Service,函数即服务) 产品——无服务器云函数(SCF,Serverless...

1.3K00
来自专栏服务端技术杂谈

我的软件架构方法论

我们公司内部职级晋升中,当目标职级比较资深或者专家后,有一项考察内容是:有自己的方法论。

29020
来自专栏软件测试经验与教训

软件测试从零开始

41890
来自专栏云计算D1net

服务器虚拟化在数据中心中的实施与应用

随着高校信息化不断发展,学校的教学科研管理全部实现数字化,对服务器硬件的需求不断加大。数据中心机房资源日趋紧张,然而通过对数据中心全局服务器设备使用情况的调查发...

60170
来自专栏Java学习网

Java生态系统的五个发展趋势

在今年短短几个月时间里,接连许多公告正在改变着Java生态系统,这些变化可能对Java开发人员和Eclipse社区产生长期影响。我认为这五个主要趋势,每一个J...

64190
来自专栏pangguoming

国外物联网平台(1):亚马逊AWS IoT

设备影子服务使用MQTT话题,便于应用和设备之间的通信,下面是相关的MQTT QoS 1话题:

73720

扫码关注云+社区

领取腾讯云代金券