【软件架构】02-复杂度来源

1、性能

1)单机

受限于主机的CPU、网络、磁盘读写速度等影响

在多线程的互斥性、并发中的同步数据状态等;

扩展:硬件资源、增大线程池

2)集群

微服务化拆分,导致调用链过长,网络传输的消耗过多。

集群下的任务分发

分布式下的任务拆分、合并

扩展:服务、主机的水平扩展

常见的系统性能列表:

1、Nginx 负载均衡 3万

2、LVS 十万级

3、F5 百万级

4、Memcache 读写TPS 5W

5、Redis 5-10万

6、kafka百万级,

7、zookeeper写入读取2万以上

8、http请求访问大概在2万左右

9、Tomcat 2000左右并发;最大连接数为200 

10、RocketMQ 10WQPS

2、高可用

1)计算高可用

冗余:通过水平扩展计算节点,每个节点都是无状态,从而达到分摊任务的目的

2)存储高可用

由于网络延迟、主机故障等问题,导致数据产生最终一致性问题。

主备模式:主节点宕机会导致不一致

双主模式:要求同步双写主节点

独裁:一主多从,要求从节点向同一个主节点发起请求,由主节点决策,典型代表有Zookeeper

协商:由多数投票通过,设立主节点。其他节点作为备节点

民主模式:各节点都参与投票,获得多数票的作为决策。存在脑裂问题(要求多数票必须大于总节点的一半以上)

3、可扩展

1)成功预测变化

多数据源的兼容、本地存储/网络存储/分布式存储、国产化服务器兼容等

2)完美封装变化

分解 变化层、稳定层,双方对外暴露接口,提供调用

构建抽象层、实现层

参考装饰器模式

  1. 抽象构件(Component)角色:定义一个抽象接口以规范准备接收附加责任的对象。
  2. 具体构件(ConcreteComponent)角色:实现抽象构件,通过装饰角色为其添加一些职责。
  3. 抽象装饰(Decorator)角色:继承抽象构件,并包含具体构件的实例,可以通过其子类扩展具体构件的功能。
  4. 具体装饰(ConcreteDecorator)角色:实现抽象装饰的相关方法,并给具体构件对象添加附加的责任。

4、低成本

成本与高可用、性能成相反作用,以附加的约束条件,作为备选考虑

5、安全性

功能安全:XSS、SQL注入攻击、CSRF、DDos攻击等

架构安全:地址白名单、访问鉴权、数据/权限分组隔离、防火墙等

6、规模化

量变引起质变,大规模部署引起的运维、监控复杂度不断增加

大数据治理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/696241.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式Qt 计算器核心算法_3

一.后缀表达式实现算数运算思路 二.算法实现 #include "QCalculatorDec.h"QCalculatorDec::QCalculatorDec() {m_exp "";m_result ""; }QCalculatorDec::~QCalculatorDec() {}bool QCalculatorDec::isDigitOrDot(QChar c) {return ((0 < c)…

基于SpringBoot的景区旅游管理系统

项目介绍 本期给大家介绍一个 景区旅游管理 系统.。主要模块有首页&#xff0c;旅游路线&#xff0c;旅行攻略&#xff0c;在线预定。管理员可以登录管理后台对用户进行管理&#xff0c;可以添加酒店&#xff0c;景区&#xff0c;攻略&#xff0c;路线等信息。整体完成度比较高…

一文搞懂match、match_phrase与match_phrase_prefix的检索过程

一、在开始之前&#xff0c;完成数据准备&#xff1a; # 创建映射 PUT /tehero_index {"settings": {"index": {"number_of_shards": 1,"number_of_replicas": 1}},"mappings": {"_doc": {"dynamic": …

探索气膜球幕影院:未来的电影体验

气膜球幕影院作为一种新兴的电影放映方式&#xff0c;正逐渐成为人们关注的焦点。它采用了充气式膜结构&#xff0c;可以为观众带来 360 度全景的观影体验&#xff0c;让人仿佛置身于电影之中。本文将介绍气膜球幕影院的特点、技术原理以及未来的发展前景。 传说在古代&#x…

Linux系统运维命令:使用 tail,grep组合命令(包括wc,sort,awk,sed等),可以方便的查阅和操作正在改变的日志文件的具体内容

一、命令介绍 1、tail命令 tail命令是Linux系统中常用的命令之一&#xff0c;用于查看文件的末尾内容。它具有许多有用的选项&#xff0c;可以帮助用户轻松地查找并显示文件中的信息。 它默认显示文件的最后10行&#xff0c;但可以通过各种选项来定制输出的行数、字节数等。ta…

十四、图像几何形状绘制

项目功能实现&#xff1a;矩形、圆形、椭圆等几何形状绘制&#xff0c;并与原图进行相应比例融合 按照之前的博文结构来&#xff0c;这里就不在赘述了 一、头文件 drawing.h #pragma once#include<opencv2/opencv.hpp>using namespace cv;class DRAWING { public:void…

Python笔记-super().init(root)的作用

假设我们有一个名为Animal的父类&#xff0c;它有一个属性color&#xff0c;在其构造函数__init__中被初始化&#xff1a; class Animal:def __init__(self, color):self.color color现在&#xff0c;我们想创建一个Animal的子类&#xff0c;名为Dog。Dog类有自己的属性name&…

QPaint绘制自定义仪表盘组件01

网上抄别人的&#xff0c;只是放这里自己看一下&#xff0c;看完就删掉 ui Dashboard.pro QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomm…

【xss跨站漏洞】xss漏洞前置知识点整理

xss漏洞成因 xss漏洞是一种前端javascript产生的漏洞。 我们网站基本都是会用到javascript编写一些东西&#xff0c;浏览器也能直接识别javascript。 如果有一个地方能够输入文字&#xff0c;但是他又没有过滤你的输入&#xff0c;那么自己或者他人看到你输入的javascript代…

JVM知识——安全点

安全点是JVM要准备进行垃圾回收时&#xff0c;选定一些特定的位置&#xff0c;当应用程序线程执行到这些位置时&#xff0c;安全的先暂停下来&#xff0c;以便JVM执行GC线程进行垃圾回收。 JVM在字节码指令中会选取一些指令作为安全点&#xff0c;安全点的选取一般是循环结束、…

课时42:表达式_运算符_bc计算

3.1.5 bc计算 学习目标 这一节&#xff0c;我们从 基础知识、简单实践、小结 三个方面来学习。 基础知识 简介 bc是一种任意精度的计算语言&#xff0c;提供了语法结构&#xff0c;比如条件判断、循环等&#xff0c;功能是很强大的&#xff0c;还能进行进制转换。常见参数-…

week04day02(爬虫02)

<span>: 通常用于对文本的一部分进行样式设置或脚本操作。<a>: 定义超链接&#xff0c;用于创建链接到其他页面或资源的文本。<img>: 用于插入图像。<br>: 用于插入换行。 姓名&#xff1a;<input type"text" value"lisi">…

嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM驱动编程第七天-内核函数接口(物联技术666)

链接&#xff1a;https://pan.baidu.com/s/1V0E9IHSoLbpiWJsncmFgdA?pwd1688 提取码&#xff1a;1688 //************************************************** #include <linux/module.h> /*module_init()*/ #include <linux/kernel.h> /* printk() *…

【析】考虑同时取送和时间窗的车辆路径及求解算法

期刊&#xff1a;computer engineering and applications 计算机工程与应用![c 引言 1. 问题分析 1.1 问题描述 问题描述为&#xff1a; 若干运输车辆从配送中心出发为客户取送货并最终返回配送中心&#xff0c;每位客户仅由一辆车服务一次&#xff0c;车辆在配送过程中任…

rust实战系列八:常量

在Rust中还可以用const关键字做声明。如下所示: const GLOBAL: i32 0; 使用const声明的是常量&#xff0c;而不是变量。因此一定不允许使用mut关键字修饰这 个变量绑定&#xff0c;这是语法错误。常量的初始化表达式也一定要是一个编译期常量&#xff0c;不 能是运行期的值。它…

ChatGPT丨成像光谱遥感技术中的AI革命:ChatGPT应用指南

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境&#xff0c;是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型&#xff0c;在理解和生成人类语言方面表现出了非凡的能力。本课程重点介绍ChatGPT在遥感中的应用&#xff0c;人工智…

尾矿库排洪系统结构仿真软件WKStruc(可试用)

1、背景介绍 尾矿库作为重大危险源之一&#xff0c;在国际灾害事故排名中位列第18位&#xff0c;根据中国钼业2019年8月刊《中国尾矿库溃坝与泄漏事故统计及成因分析》的统计&#xff0c;在46起尾矿库泄漏事故中&#xff0c;由于排洪设施导致的尾矿泄漏事故占比高达1/3&#x…

c#创建安装windows服务

背景:最近在做设备数据对接采集时,遇到一些设备不是标准的Service-Client接口,导致采集的数据不够准确;比如设备如果中途开关机后,加工的数量就会从0开始重新计数,因此需要实时监控设备的数据,进行叠加处理;考略到工厂设备比较多,实时监听接口的数据为每秒3次,因此将…

外包干了三年,技术算是废了。。。

先说一下自己的个人情况&#xff0c;大专生&#xff0c;17年通过校招进入湖南某软件公司&#xff0c;干了接近5年的手工测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了五年的手工…

LeetCode.106. 从中序与后序遍历序列构造二叉树

题目 106. 从中序与后序遍历序列构造二叉树 分析 前面讲过根据前序和中序构建二叉树&#xff1a;博客链接 这道题是告诉我们一颗二叉树的后序和中序&#xff0c;让我们根据后序和中序构造出整颗二叉树。 拿到这道题&#xff0c;我们首先要知道中序的后序又怎样的性质&#…