Java程序员如何学习架构

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

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

初始阶段

应用和数据服务器分离

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

使用缓存

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

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

集群

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

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

数据库读写分离

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

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

cdn和反向代理

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

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

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

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

使用nosql和搜索引擎

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

业务拆分

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

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

分布式服务

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

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

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

分布式架构学习要点

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

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

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

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

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

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

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

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

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

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

作者介绍

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

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

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算D1net

如何将数据中心迁移到云端

随着云计算技术得到了大肆宣传,并为用户、媒体、厂商不断地讨论,在IT行业内实施云计算已经成为一种浪潮,但是要真正实施云计算还存在一定的风险和挑战。诚然,把...

4099
来自专栏互联网杂技

交互是如何塑造优质的产品细节的?

最好的产品通常会做好两件事情:功能和细节。功能能够吸引用户关注这个产品,而细节则能够让关注的用户留下来。”Dan Saffer 的这句话阐明了许多成功产品的秘诀...

2795
来自专栏云计算D1net

破译混合云架构的关键点:云数据传输

混合云架构融合了私有云和公有云,如何部署混合云已经成为IT圈里面最热门的话题之一。大部分数据中心团队都发现这种架构在技术上具有极大的挑战,这些挑战主要源于各种工...

3508
来自专栏ThoughtWorks

容器化时代对测试的机遇 | TW洞见

今日洞见 文章作者/图片来自ThoughtWorks:梁真,图片来源于网络。 本文所有内容,包括文字、图片和音视频资料,版权均属ThoughtWorks公司所有...

34814
来自专栏云计算D1net

云原生机制的三个核心思想及其未来之路

摆脱临时性自动化方案之定位,发挥优势以实现可预测功能。 ? 您能否以每周为单位向客户发布各类新功能?甚至进一步达到以每天乃至每小时为单位?新晋开发人员能否在上班...

2474
来自专栏腾讯开源的专栏

Github 开源项目贡献指南:开源的法律问题

向世界分享你们具有创造性的工作,这是一个多么令人激动和有价值的经历。这也意味着你们必须担心一堆你们不清楚的法律问题。幸运的是,你们不必从头开始。我们已经涵盖了你...

7591
来自专栏BestSDK

写出高质量代码的10个Tips

文|汤涛 很长一段时间以来,我都在关注如何提高代码质量,也为此做过一些尝试,我想这个话题可能大家会比较感兴趣,在这里分享一下我关于如何提高代码质量的一些体会。 ...

2496
来自专栏携程技术中心

干货 | 携程机票无线测试技术与效能提升

作者简介 罗昭君,携程机票无线高级测试经理,负责机票移动端功能测试、自动化测试、平台开发等。从事开发、测试工作近12年,先后在阿里巴巴、携程任职。 一、敏捷下移...

2755
来自专栏非著名程序员

论HTML5的重要性之微软放弃自家视频插件Silverlight将转向HTML5

论HTML5的重要性 ? 前言:北京时间7月3日上午消息,微软近期正在鼓励网站停止使用该公司的Silverlight技术,转而使用更新的、基于HTML5...

1958
来自专栏架构师小秘圈

垂直电商架构进化之路

作者:张增、邓良驹,分别为乐视云计算电商云团队负责人,乐视云计算高级开发工程师 来自:高效运维 1. 电商系统发展过程 电商网站在不同时期的架构复杂度有所不同:...

3619

扫码关注云+社区