软件架构设计原则之里氏替换原则

​ 里氏替换原则(Liskov Substitution Principle,LSP)是指如果对每一个类型为T1的对象o1,都有类型为T2的对象O2,使得以T1定义的所有程序P在所有的对象O1都替换成O2时,程序P的行为没有发生变化,那么类型T2是类型T1的子类型。 这个定义看上去还是比较抽象的,我 ... »

gupaoedu-tom

千万级并发架构下,关系型数据库应该如何优化?大厂是如何做分库分表的!

随着互联网的高速发展,带来了海量数据存储的问题,比如像物联网行业,每个智能终端每天进行数据采集和上报,每天能够产几千万甚至上亿的数据。在互联网电商行业,或者一些O2O平台,每天也能产生上千万的订单数据,这些量级的数据在传统的关系型数据库中已经无法支撑了,那么如何解决海量数据存储和计算等问题,在业内引 ... »

mic112

Hive架构及搭建方式

前言 本文档基于hive 3.1.2编写 hive的基础知识 基本架构 整个hive由hiveserver2和hive 客户端组成 hive客户端有三种,beeline 、使用jdbc链接hiveserver、或使用hive CLI(这个已经过时,hive官方已经不推荐,推荐beeline) hiv ... »

架构师成长系列:高层架构设计之落地设计第一步(方法经验总结)

前面讲到了架构师在高层架构设计阶段要做的事情,以及基本的方法。 接下来具体地看看如何把设计落地: 首当其冲的就是要确定系统边界, 下面就来聊一聊确定系统边界要做什么,以及如何确定系统边界。 一:确定系统边界,架构师需要做什么,包含但不限于: 1:明确系统该做什么,而不做什么 这个非常重要,清晰的边界 ... »

yflx

.NET 分布式系统架构(有转载部分)

一、设计目的 搭建一个大型平台需要综合考虑很多方面,不单纯是软件架构,还包括网络和硬件设备等。由于现代大部分应用建设都面临用户多、高并发、高可用的需求,传统软件架构已不能满足需求,需要支持分布式软件架构,能支持横向扩展,具有高可用、伸缩性、稳定性等特点。搭建如下系统架构。 二、系统软件结构 系统软件 ... »

xiaobaicai12138 其他

1万字长文高速你千万级并发架构下如何提高数据库存储性能

如图所示,表示发起一个请求时,涉及到数据库的相关操作,在前面的文章中我们说过,如果服务端要提升整体的吞吐量,就必须要减少每一次请求的处理时长,那么在当前这个场景中,数据库层面哪些因素会影响到性能呢? 图2-1 池化技术,减少频繁创建数据库连接 遇到这样的问题,解决办法就是顺着当前整体的逻辑去思考,首 ... »

mic112

ClickHouse 存算分离架构探索

背景 ClickHouse 作为开源 OLAP 引擎,因其出色的性能表现在大数据生态中得到了广泛的应用。区别于 Hadoop 生态组件通常依赖 HDFS 作为底层的数据存储,ClickHouse 使用本地盘来自己管理数据,官方推荐使用 SSD 作为存储介质来提升性能。但受限于本地盘的容量上限以及 S ... »

JuiceData

亿级流量实验平台设计与实现

大家好,我是雨乐。今天给大家分享一款亿级流量实验平台。 在互联网行业,要上线一个策略(CTR预估、CVR预估等),或者一个功能,如果贸然全量上线,那么如果新策略效果不佳,可能会造成不小的损失,要么丢失用户,要么损失收入。 那么怎样才能避免此问题发生呢?这就引入了实验平台,通过对流量打标签,然后分析实 ... »

gaoxingnjiagoutansuo

架构师成长系列:如何做高层架构设计(方法经验总结,纯干货)

前面已经讲述了如何做需求分析,通过准确、全面、深入的需求分析,我们搞清楚了到底要做什么,形成了可落地的业务架构,以及完整的功能点列表。 接下来,我们就要来进行架构设计了。 架构设计是一个软件从无到有的过程,不是一蹴而就的,我们先来看看高层架构设计。 一:在高层架构设计阶段,架构师需要做什么,包含但不 ... »

yflx

阿里P8面试官:如何设计一个扛住千万级并发的架构(超级详细)-续

在上一篇文章中,详细分析了设计一个千万级并发架构所需要思考的问题,以及解决方案。 在这一片文章中,我们主要分析如何在职场足够用户数量的情况下,同步提升架构的性能降低平均响应时间。 如何降低RT的值 继续看上面这个图,一个请求只有等到tomcat容器中的应用执行完成才能返回,而请求在执行过程中会做什么 ... »

mic112

服务发现-从算法到实现

读前福利,本文的参考内容,均可在下面链接获取(免费哦) 必备经典书籍 服务发现,作为互联网从业人员,大家应该都不陌生,一个完善的服务集群,微服务是必不可少的功能之一。 最近一直想写这个话题,也一直在构思,但不知道从何入手,或者说不知道写哪方面。如果单纯写如何实现,这个未免太乏味枯燥了;而如果只是介绍 ... »

gaoxingnjiagoutansuo

Kotlin/Native KMM项目架构

一、什么是KMM? Kotlin Multiplatform Mobile ( KMM ) 是一个 SDK,旨在简化跨平台移动应用程序的创建。在 KMM 的帮助下,您可以在 iOS 和 Android 应用程序之间共享通用代码,并仅在必要时编写特定于平台的代码。 KMM用纯Kotlin编写一次代码, ... »

阿里P8面试官:如何设计一个扛住千万级并发的架构?

大家先思考一个问题,这也是在面试过程中经常遇到的问题。 如果你们公司现在的产品能够支持10W用户访问,你们老板突然和你说,融到钱了,会大量投放广告,预计在1个月后用户量会达到1000W,如果这个任务交给你,你应该怎么做? 1000W用户的问题分解 如何支撑1000W用户其实是一个非常抽象的问题,对于 ... »

mic112

架构师必备:MySQL主从延迟解决办法

上一篇文章介绍了MySQL主从同步的原理和应用,本文总结了MySQL主从延迟的原因和解决办法。如果主从延迟过大,会影响到业务,应当采用合适的解决方案。 MySQL主从延迟的表现 先insert或update写入更新操作,再立即select查询,但是得不到最新的结果。 可通过show slave st ... »

【架构设计】无状态状态机在代码中的实践

无状态状态机 一:前言 ​ 在项目中经常有一些工单,申请之类需要对状态进行流转。这种需求一般都是满足什么条件然后就翻转状态。这些流程结构相似得逻辑,感觉可以抽象处理。用一个通用得结构处理,可以让系统更加整洁,代码逻辑更加单一。 ​ 发现阿里开源一种,轻量级得无状态状态机得组件。仔细研究一下,确实很适 ... »

Android系统架构与系统源码目录

前言 技术博客终于可以恢复正常的更新速度了,原因是我编写的进阶书籍的初稿已经完成,窃以为它将会是Android应用书籍中最有深度的一本,可以说是《Android开发艺术探索》的姊妹篇。在这本书的最后一 »

xiongwei

开放群组架构TOGAF - 时间朋友

作于一个架构师尤其是企业架构师来说,丰富的理论知识可以帮助他在架构规划及管理过程中站在更高的角度去看待问题,历史发展原因有很多已成体系的架构理论,TOGAF是近年来比较接地气的,受到了政府和银行业的重 »

doit8791

React Native之新架构中的Turbo Module实现原理分析

有段时间没更新博客了,之前计划由浅到深、从应用到原理,更新一些RN的相关博客。之前陆续的更新了6篇RN应用的相关博客(传送门),后边因时间问题没有继续更新。主要是平时空余时间都用来帮着带娃了,不过还是要挤挤时间来总结下,目标是完成由浅到深、由应用到原理的RN系列博客。本篇算是属于原理部分的博客,不过 ... »

SONiC架构分析

SONiC构建在Linux系统之上,并且利用键值数据库(redis)、容器技术(docker)、标准化硬件接口定义等技术,使其成为一个软硬件彻底解耦、软件模块松耦合(loose coupling)、高可靠、易于扩展、开源开放的网络软件系统。其架构特点主要体现在3个方面: ... »

kekukele