热门标签 | 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


推荐阅读
  • Spring Cloud因其强大的功能和灵活性,被誉为开发分布式系统的‘一站式’解决方案。它不仅简化了分布式系统中的常见模式实现,还被广泛应用于企业级生产环境中。本书内容详实,覆盖了从微服务基础到Spring Cloud的高级应用,适合各层次的开发者。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • mysql 分库分表策略_【数据库】分库分表策略
    关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多, ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 探讨架构师在项目中应如何平衡对产品的关注和对团队成员的关注,以实现最佳的开发成果。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • ArchSummit深圳2014将于7月18日拉开帷幕,所有讲师已确认,涵盖9个热门话题,共36场精彩报告。InfoQ中文站提供了详细的讲师和报告列表。 ... [详细]
  • 历经两个月,他成功斩获阿里巴巴Offer
    经过两个月的努力,一位普通的双非本科毕业生最终成功获得了阿里巴巴的录用通知。 ... [详细]
  • 迎接云数据库新时代:程序员如何应对变革?
    在数据无处不在的时代,数据库成为了管理和处理数据的核心工具。从早期的信息记录方式到现代的云数据库,数据库技术经历了巨大的变革。本文将探讨云数据库的特点及其对程序员的影响。 ... [详细]
  • 收割机|篇幅_国内最牛逼的笔记,不接受反驳!!
    收割机|篇幅_国内最牛逼的笔记,不接受反驳!! ... [详细]
  • 技术总监的角色定位与代码实践
    关于技术总监是否应当参与代码编写,这一议题始终伴随着技术行业的成长而引发广泛的讨论。本文旨在从多个角度探讨技术总监参与代码编写的必要性和影响因素,包括公司背景、发展阶段及团队规模等。 ... [详细]
  • 数据集成策略:ETL与ELT架构对比及工具选择
    随着企业信息化的深入发展,‘数据孤岛’问题日益突出,阻碍了数据的有效利用与整合。本文探讨了如何通过构建数据仓库解决这一问题,重点分析了ETL与ELT两种数据处理架构的特点及适用场景,为企业选择合适的ETL工具提供了指导。 ... [详细]
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社区 版权所有