热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

架构思考

2019独角兽企业重金招聘Python工程师标准闲来无事,总结了下架构设计方面的一些思考1、稳定性。一切以稳定为中心。架构尽可能简单、清晰。不过度设计2、解耦拆

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

闲来无事,总结了下架构设计方面的一些思考

    1、稳定性

            。一切以稳定为中心

            。架构尽可能简单、清晰

            。不过度设计

    2、解耦/拆分

            。稳定部分与易变部分分离

            。核心业务与非核心业务分离

            。主流程与辅流程分离

            。应用与数据分离

            。服务与实现细节分离

            。数据拆分:读写分离、分库分表、冷热数据分离

    3、抽象化

            。应用抽象化:应用只依赖服务抽象,不依赖服务实现细节、位置

            。数据库抽象化:应用只依赖逻辑数据库,不需要关心物理库的位置和分片

    4、松耦合

            。跨域调用异步化:不同业务域之间尽量异步解耦

            。非核心业务尽量异步化:核心、非核心业务之间,尽量异步解耦

            。必须同步调用时,需要设置超时时间和任务队列长度

    5、高可用

            。集群容错:应用系统集群,避免单点

            。多机房容灾,异地多活

            。分流:水平可扩展-在线扩容机器

            。降级:非核心业务可根据情况降级处理(业务直接不展示或mock数据或直接利用本地缓存)

            。限流:对流量做过滤,保证部分请求可用

            。自动化运维

    6、灵活

            。支持灰度发布,分步切流量

            。功能开关,可回退

            。A/B test,配备相应数据展示层,及时感知数据变化

    7、监控

            。服务器监控:内存、cpu、i/o、负载

            。应用监控:qps、rt、gc

            。异常监控报警

            。分布式链路追踪监控:zipkin、pinpoint

            。业务监控:核心业务生命周期监控,比如根据订单号获取所有相关生命周期和数据

    8、领域建设

            。厘清业务边界,建设领域模型

            。基础业务/服务下沉,可复用

            。平台/组件化:可搭积木式构建新业务,降低成本

            。数据收敛:只能通过服务来访问其他领域的数据

    9、依赖原则

            。禁止循环依赖

            。稳定部分依赖:稳定部分不依赖易变部分、易变部分可以依赖稳定部分

            。核心服务依赖:核心服务不依赖非核心服务、非核心服务可依赖核心服务,保证核心服务稳定

            。基础服务依赖:基础服务不向上依赖流程服务、流程服务/组合服务可向下依赖基础服务,保证基础服务稳定

            。平台服务依赖:平台服务不依赖上层应用、上层应用可依赖平台服务,保证平台服务稳定

            。非功能性服务依赖:非功能性服务不依赖功能性服务、功能性服务可依赖非功能性服务,保证非功能性服务稳定

            。跨业务域调用时,尽可能异步弱依赖

    10、服务设计

            。无状态,接口调用幂等

            。可复用,复用粒度是有业务逻辑的抽象服务,不是服务细节

            。松耦合、高内聚

            。可治理

            。基础服务之间物理隔离,包括数据层

写了这么多,无非就是围绕稳定性、可扩展性、易用性、灵活性展开的,其中重中之重是稳定性

失去了稳定性,其他一切都是扯淡

另外,架构必须紧贴业务,抛开了业务,所有技术也都是扯淡,产生不了价值


转载于:https://my.oschina.net/u/3729258/blog/1810885


推荐阅读
  • 深入浅出:Hadoop架构详解
    Hadoop作为大数据处理的核心技术,包含了一系列组件如HDFS(分布式文件系统)、YARN(资源管理框架)和MapReduce(并行计算模型)。本文将通过实例解析Hadoop的工作原理及其优势。 ... [详细]
  • 构建高性能Feed流系统的设计指南
    随着移动互联网的发展,Feed流系统成为了众多社交应用的核心组成部分。本文将深入探讨如何设计一个高效、稳定的Feed流系统,涵盖从基础架构到高级特性的各个方面。 ... [详细]
  • 本文详细介绍了在 Windows 7 上安装和配置 PHP 5.4 的 Memcached 分布式缓存系统的方法,旨在减少数据库的频繁访问,提高应用程序的响应速度。 ... [详细]
  • 对象存储与块存储、文件存储等对比
    看到一篇文档,讲对象存储,好奇,搜索文章,摘抄,学习记录!背景:传统存储在面对海量非结构化数据时,在存储、分享与容灾上面临很大的挑战,主要表现在以下几个方面:传统存储并非为非结 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 2021年Java开发实战:当前时间戳转换方法详解与实用网址推荐
    在当前的就业市场中,金九银十过后,金三银四也即将到来。本文将分享一些实用的面试技巧和题目,特别是针对正在寻找新工作机会的Java开发者。作者在准备字节跳动的面试过程中积累了丰富的经验,并成功获得了Offer。文中详细介绍了如何将当前时间戳进行转换的方法,并推荐了一些实用的在线资源,帮助读者更好地应对技术面试。 ... [详细]
  • 时序数据是指按时间顺序排列的数据集。通过时间轴上的数据点连接,可以构建多维度报表,揭示数据的趋势、规律及异常情况。 ... [详细]
  • 集群与负载均衡技术解析
    本文探讨了集群(Cluster)的概念,即通过网络连接的一组计算机系统,它们作为一个整体提供服务,实现分布式计算。文章还详细介绍了负载均衡技术,旨在提高网络服务的效率和可靠性。 ... [详细]
  • 深入解析轻量级数据库 SQL Server Express LocalDB
    本文详细介绍了 SQL Server Express LocalDB,这是一种轻量级的本地 T-SQL 数据库解决方案,特别适合开发环境使用。文章还探讨了 LocalDB 与其他轻量级数据库的对比,并提供了安装和连接 LocalDB 的步骤。 ... [详细]
  • RabbitMQ 核心组件解析
    本文详细介绍了RabbitMQ的核心概念,包括其基本原理、应用场景及关键组件,如消息、生产者、消费者、信道、交换机、路由键和虚拟主机等。 ... [详细]
  • 分布式计算助力链力实现毫秒级安全响应,确保100%数据准确性
    随着分布式计算技术的发展,其在数据存储、文件传输、在线视频、社交平台及去中心化金融等多个领域的应用日益广泛。国际知名企业如Firefox、Google、Opera、Netflix、OpenBazaar等均已采用该技术,推动了技术创新和服务升级。 ... [详细]
  • 本文详细介绍了如何在PHP中使用Memcached进行数据缓存,包括服务器连接、数据操作、高级功能等。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • PCIe中的弹性缓冲原理解析
    PCIe是一种高速串行总线,其传输信号为差分信号,并采用同步传输方式。然而,PCIe并没有专用的同步时钟。本文将详细介绍PCIe中的弹性缓冲(Elastic Buffer)原理,探讨其如何处理时钟差异,确保数据传输的稳定性和可靠性。 ... [详细]
  • 本文详细解析了Java中流的概念,特别是OutputStream和InputStream的区别,并通过实际案例介绍了如何实现Java对象的序列化。文章不仅解释了流的基本概念,还探讨了序列化的重要性和具体实现步骤。 ... [详细]
author-avatar
淡淡木香coolgirl
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有