伴随着大家对成长黑客Growth Hacker的关注,AARRR运营模型也被提高到非常重要的层面。然而,运营是需要技术层面支撑的,没有技术支撑,AARRR恐难以真正有效。所以, 在做移动产品架构设计的时候,AARRR 应该作为一个新的非功能需求
在商业的世界中,常说的一句话是“现金为王”。在互联网或者移动互联网乃至整个软件技术世界中,与之相近的一个说法就是“缓存为王”。什么是缓存呢?1.1 什么是缓存?缓存:存储在计算机上的一个原始数据复制集,以便易于访问—— 维基百科缓存是系统快速响应中的一种关键技术,是一组被保存起来以备将来使用的东西
数据是系统的核心,在面向服务的架构之外,可以考虑面向数据的架构方式。面向数据的服务架构需要支持多数据源异构,支持动态数据和静态数据,既支持公有云部署又支持私有云部署,提供多种数据应用和数据产品......
Robert Martin 就是我们常说的Bob大叔,是码界的骨灰级人物了,在4年前提出了所谓的简洁架构,值得回顾反思一下,看看是否可以借鉴到微服务中呢?
分布式系统: A distributed system is one in which components located at network computers communicate and coordinate their actions only by passing messages.由于单机处理能力存在瓶颈,而升级单机处理能力的性价比越来越低,出于稳定性和可用性的考虑,就出现了分布式系统的架构方案。将分布式系统中的一些通用功能提出来形成了中间件,常用的有消息系统,服务框架,数据访问等...
业务系统性能优化的前提时观察和诊断,观察工具如下:前端优化工具:YSlow页面响应时间:Firebug方法相应时间:btraceGC日志分析:JVM 启动参数数据库优化:慢查询系统资源调用:监控
消息系统中,常用的一致性解决方案如下:1) 发送消息给消息系统2) 消息系统入库消息3) 消息系统返回结果4) 业务操作5) 发送业务操作结果给消息系统6) 更改存储中的消息状态......
架构是什么?业界并没有权威的说法。架构作为名词与结构相关,将产品分解为一系列组件、模块和交互。作为动词,是关于交流愿景和引入技术领导力的,简而言之,架构就是结构和愿景。应用程序的架构着重软件和代码的组织,系统架构描述从组件和服务到子系统等更高层次的抽象含软硬件,从代码结构到生产环境,与软件系统重要元素相关的所有东西就是软件架构。企业架构时战略而非代码。敏捷与架构并不冲突,在独特环境下量化所需的预先
架构包含技术的选择,更多分层等于更高的复杂度,但是轻量级协同设计可以提高质量。最佳实践也是有使用条件限制的,面对架构要用于质疑。系统的最大风险外部接口是系统风险最高的部分之一。 - 关键的外部接口有哪些?接口的技术定义是什么? - 哪些队列是通信组件?消息的格式是什么? - 同步还是异步?异步连接是否有保障?能否乱序传输? - 接口是否幂等?接口的可用性、性能、可伸缩性、安全性?
约束时间和预算是约束的基本条件。技术约束技术清单,现有系统的互操作性(兼容性),目标部署平台,技术成熟度(保守),开源技术,供应商关系(阿里云,还是AWS),过去的失败,内部知识产权人员约束团队规模,技能,团队扩展的速度,咨询和培训,运维团队的技能组织约束企业战略的影响,办公室政治的影响约束条件也是有优先级的。原则开发原则编码标准和规范,自动化单元测试,静态分析工具架构原则1)分层策略,如UI组件里
连自己都没想到,log日志居然如此的丰富多彩,有很多有趣的问题,不仅仅是一种全栈必备的技能,更是一种开发者的基本素养。
存储,是我们码农每天都要打交道的事情,而当我们面对RAID,SAN,对象存储,分布式数据库等技术的时候,又往往似是而非,存储成了我们熟悉的陌生人。在老码农眼中,存储仿佛是这个样子的。从计算机结构出发存储是计算机的一部分,在冯诺伊曼体系结构中,有一个重要的单元即存储器,它连接了输入/输出,以及控制器和运算器,处于核心纽带的位置。存储的介质主要包括内存(DRAM)、固态硬盘(SSD)、机械硬盘(HDD
要使业务系统无极缩放,微服务架构方兴未艾。本质上,就是采用API(例如REST) 封装服务调用,形成服务框架。既然是分布式API调用,必然涉及到网络IO常见的三种方式:1) BIO:Blocking IO,阻塞方式,一个socket用一个线程处理2) NIO: Non-blocking IO,事件驱动,采用reactor模式,一个线程中处理多个socket,JDK1.4以上
数据访问层是一个链式的处理过程,并且多数组件都是提供对外提供JDBC的实现,提供服务的方式有三:1) 提供专有API,通用性差2) 通用性强的方式,如JDBC3) 基于ORM的方式,可以在ORM框架上再包一层,对外暴露的还是原有框架的接口。在合并查询时,JDBC优势明显。数据访问层设计的基本步骤:SQL解析,规则处理,SQL改写,数据源选择,SQL执行和结果集返
一个web应用一般可以分为5层1切面:1)运行环境:操作系统,Web 容器,CGI等2)应用框架:Thinkphp,rails,django等3)应用本身:论坛,社交,博客等4)前端框架:AngularJS,jQuery,Bootstrap等5)第三方的内容:Google AD,mashup 等一个切面就是各层对应的各种插件体系。
我们先从最简单的设计开始。基于DB的最简方案表达用户信息和相互关系,基于DB只需要两张表可实现,示意如图12-2:图12-2 用户信息与用户关系表示意图relation表主要有两个字段followerId和followeeId,一行relation记录表示用户关系拓扑的一条边,由followerId代表的用户指向followeeId代表的用户。userInfo表关注每个用户的详细信息,比如用户名、
目前市面上已经有很多开源的缓存框架,比如Redis、Memcached、Ehcache等,那为什么还要自己动手写缓存?本章将带领大家从0到1写一个简单的缓存框架,目的是让大家对缓存的类型、缓存的标准、缓存的实现以及原理方面有一个系统的了解,做到知其然,知其所以然。3.1 缓存定义的规范 JSR是JavaSpecification Requests的缩写,意思是J
应石头兄弟之邀,想从复杂性的视角看一下从微服务到service mesh 的演进,没想到复杂性本身就是一个难点,于是找来了一本关于复杂性的书,希望从中能够对复杂性有一些进一步的认识。 (来自百度百科)复杂性是当代科学的一个前沿和热点,具有跨学科综合性的趋势。不幸的是,复杂系统理论仍在等待它的牛顿。复杂性实际上就是一门关于突现的科学,而系统思想主要有三组概念:突现与等级,通讯与控制,...
企业规模的软件系统该如何设计呢?在开始写代码之前,我们需要选择一个合适的架构,这个架构将决定软件实施过程中的功能属性和质量属性。因此,了解软件设计中的不同架构模式对我们的软件设计会有较大的帮助。什么是架构模式?根据维基百科:架构模式是针对特定软件架构场景常见问题的通用、可重用解决方案。架构模式类似于软件设计模式,但范围更广。本文将简要解释10种常见架构模式及其用法、优缺点。 分...
“今年除夕当晚,春晚红包将会随着央视春节联欢晚会的直播接棒登场,
作为一个半吊子全栈工匠,在20多年的职业生涯里遇到过太多关于软件性能的问题。论证或者证明性能的问题往往很关键,能否通过一次一个小而有逻辑的可证明可审核的步骤来解决性能问题呢?曾经企图创建一种公理化的方法来优化计算机软件性能,然而能力所限,惭愧之至。退而求其次,希望能够清楚地系统思考如何优化计算机软件的性能。1. 什么是性能?明确概念性能——performance,有着太多概念外延,在生活中几乎随时
要使业务系统无极缩放,微服务架构方兴未艾。本质上,就是采用API(例如REST) 封装服务调用,形成服务框架。既然是分布式API调用,必然涉及到网络IO常见的三种方式:1) BIO:Blocking IO,阻塞方式,一个socket用一个线程处理2) NIO: Non-blocking IO,事件驱动,采用reactor模式,一个线程中处理多个socket,JDK1.4以上版本支持3) AIO:Asynchronous IO,异步,采用Proactor模式,NIO在有通知时可以进行相关操作,
数据访问层是一个链式的处理过程,并且多数组件都是提供对外提供JDBC的实现,提供服务的方式有三:1) 提供专有API,通用性差2) 通用性强的方式,如JDBC3) 基于ORM的方式,可以在ORM框架上再包一层,对外暴露的还是原有框架的接口。在合并查询时,JDBC优势明显。
约
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号