架构知识总结——基础篇

前言

随着工作经验的积累,学习的知识从开始的某一领域深入研究到技术面横向扩充,涉及并积累了很多方面的技术经验,但始终没有静下心来系统完备的进行总结。平时会对某一领域的积累进行思考整理,都只是在单一的技术面,缺少从全局领域的视角进行深层次的剖析总结。在极客时间上看到一堂从0学习架构的课程,发现里面课程目录介绍正是自己工作多年来一步步实践过的路程,于是想通过这堂简易课程的学习对自己来一次全局领域的深层次总结。

后面的内容技术不会很深入,但都是各个领域技术知识的介绍,和平时的经验总结。

不想当架构师的IT不是一名合格的程序猿。技术初入者总会有种感觉——架构师那是一个很难企及的层次,架构师能设计出很牛掰的架构、能解决任何问题。相信很多人都是从这样的小猿一步步成长起来的,在这里不发表意见。随着从0开始学习架构,来一步步解析架构师到底需要掌握什么。

基础架构知识面介绍

架构设计的目的是让程序在以解决需求问题的前提下,以最恰当的方式运行。条条道路通京城,通过各种方式总能设计出满足需求的架构,但如何设计出最合适的架构,而不是为了设计架构而设计,这个度不是那么好把控。

下面引用课程中的一段问答:

“架构设计要考虑高性能、高可用、高扩展……这么多高 XX,全部设计完成估计要 1 个月,但老大只给了 1 周时间”

——架构设计并不是要面面俱到,不需要每个架构都具备高性能、高可用、高扩展等特点,而是要识别出复杂点然后有针对性地解决问题。

架构设计需要面临的几个方面:高性能、高可用、可扩展性和开发成本等;

高性能:在架构方面的体现,纵向拆分为集群,单台机性能不行加节点。横向为功能模块拆分,相当于业务功能分布式处理,每个模块只处理自己范围的逻辑,通过相互间的调用完成复杂的任务场景。横向拆分可能会增加任务执行的复杂度,因为节点间的网络调用可定无法和内部方法调用相比,但是拆分后的功能模块,集群扩展性更自由,可以根据模块需求搭建合适的集群规模,而且由于从以前的内部业务强耦合,到拆分后的业务低耦合,模块内部的处理复杂度也会大幅下降。于是,以前的单体应用,在互联网大并发的场景下无法生存,催生了微服务、技术中台等新名词。

高可用:从架构层次分析,集群也是高可用的一种,单台机宕机不影响系统继续提供服务。常见的高可用有:主主、主从、热备、冷备等。更复杂的场景,考虑网络可用性,还分异地跨机房、跨运营商等。

可扩展性:平常在设计程序架构时,都会根据需求进行长远分析,预测业务需求的发展方向。程序设计上就需要考虑如何来应对可能性的需求变化,以便于在后续需求变化时,程序可以不变动或者以最小变动的代价来支撑,这时候就需要对程序的代码层次进行职责分离。每个层次的代码依据通用的接口协议进行交互,以满足上下层业务变动不影响中间层代码实现。

所以,这时候对于代码层次间接口的定义就显得非常重要,需要抽离出变动业务的通用性,以在业务变动后接口照样能满足需求。比如:一个简单的用户订单系统包含订单管理模块和消息通知模块,当用户订单变动时,需要通知对应的用户。开始出于时间和成本考虑,只需要发送邮件通知对应的用户即可。上线后,用户对于邮件通知的及时性不满意,需要改为通过短信方式通知。如果前期的订单模块和通知模块耦合度紧密,直接以代码实现方式调用,这时候需要改为短信通知,需要变动的模块将不只是修改通知模块,还需要修改订单系统变动时的触发点逻辑。在前期,如果预测到这种需求变化的可能性,在订单模块和消息通知模块间定义通用的接口交互协议,当通知模块发生变动时,对于订单模块无感知,继续按照定义好的接口协议调用即可。对于上述场景,更新一步,可以分离问两个独立服务(订单服务、通知服务),中间以消息队列的方式进行调用。订单模块推送消息通知任务到消息队列,通知模块订阅通知消息队列发送消息,消息通知需求变更引起的逻辑实现调整和服务部署更新将不会影响到订单相关功能。

上面的接口协议,可以理解为稳定层(抽象层),变动逻辑属于变动层(实现层)。通过稳定层进行交互,变动层的修改将会被传递给关联交互层。

低成本、安全和规模:对于互联网产品,服务器涉及经常成百上千,这块的成本是不可能忽视的问题。通过更高效的技术方案,往往能节省的服务器资源是非常可观的。往常原始的一些底层基础服务,在某些场景下已经不能满足业务急剧增长的需求,会促使新的技术创新诞生。比如

NoSQL(Memcache、Redis 等)的出现是为了解决关系型数据库无法应对高并发访问带来的访问压力。

全文搜索引擎(Sphinx、Elasticsearch、Solr)的出现是为了解决关系型数据库 like 搜索的低效的问题。

Hadoop 的出现是为了解决传统文件系统无法应对海量数据存储和计算的问题。

架构安全性,敏感数据的安全性在如今的互联网大环境下越来越突显,史上每次大规模敏感数据泄露对当事的公司的影响非常可怕。所以,架构安全方面的问题需要谨慎对待。常见的安全问题:xss攻击、csrf攻击、sql注入和系统漏洞等,都可能成为被攻击的缺陷点。常用的安全预防手段:服务器网络防火墙、网段和端口隔离,提升密码复杂度等,除此之外,还需要及时更新发现的各种系统和中间件漏洞,预防可能的被攻击点。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
cda备考学习学习笔记——基础知识(二)主要涉及了计算机科学与技术领域的基本概念和知识。 首先,它介绍了计算机网络的基础知识。网络是将多台计算机通过通信链路连接起来,使它们能够相互通信和共享资源的系统。笔记中详细介绍了网络的组成、拓扑结构和通信协议等重要内容。 其次,笔记还解释了计算机系统的基本组成。计算机系统由硬件和软件两部分组成,其中硬件包括中央处理器、存储器、输入输出设备等,而软件则分为系统软件和应用软件。笔记详细介绍了各种硬件和软件的功能和作用。 此外,笔记还对数据库管理系统进行了介绍。数据库管理系统是一种用于管理和组织数据的软件系统,它能够实现数据的存储、检索和更新等操作。笔记中详细介绍了数据库的概念、结构和操作等内容。 最后,笔记还包括了算法和数据结构的基础知识。算法是解决问题的一系列步骤和规则,而数据结构则是组织和存储数据的方式。笔记中介绍了常用的算法和数据结构,如排序算法、树和图等。 总之,通过学习CDA备考学习笔记中的基础知识(二),我们能够更好地理解计算机网络、计算机系统、数据库管理系统以及算法和数据结构等相关概念和知识。这些基础知识对于我们深入研究计算机科学与技术领域是非常重要的,也为我们日后的学习和工作奠定了坚实的基础

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值