架构

APP后台架构20191205

与世无争的帅哥 提交于 2019-12-06 14:47:16
1. 架构 ,架构与业务紧密相关,是有业务驱动的。 2.APP后台演进原则。 App后台的架构是由业务规模驱动而演进的,App后台是为业务服务的,App后台的价值在于能为业务提供其所需要的功能,不应过度设计。 从项目的角度, 当App访问量不大时,应该快速搭建App后台,让App尽快上线给用户提供服务,验证商业模式的正确性,同时快速迭代产品。 当App访问量不断上升,这时要在保证快速迭代的前提下,同时兼顾高性能和高可用。 当App访问量达到一定阶段后,增长曲线就会放缓,但业务变得更加复杂,对高性能和高可用的要求也更高,性能问题、模块间的耦合、代码的复杂性会更加突出和明显,这时要使用业务拆分、分布式服务调用,甚至是技术转型等问题。    1. 项目启动时,单机部署。 app后台一个极简化的架构: 一开始就使用Redis的好处: 既能用作缓存,又能充当队列服务,而且并发性能高,能在长时间内应对业务压力,非常适合初期的项目。 这里使用Redis验证用户信息,充当消息队列。 而文件服务初期可以选择 文件云存储服务,或者自己搭建一个资源服务器。    2.项目一定规模时,分布式部署: 看一个百万到千万级的架构: 这里新增了专门用于连接内部服务器的SSH服务的外网通道,保证SSH操作随时可用,同时加入了服务器集群,提供负载能力。 随着业务的发展,某些数据表的规模会以几何级增长

ceph架构简介

爷,独闯天下 提交于 2019-12-06 14:32:25
ceph架构简介 在测试OpenStack的后端存储时,看到了ceph作为后端存储时的各种优势 ,于是查询资料,总结了这篇ceph架构的博客,介绍了ceph的架构和ceph的核心组件。ceph整体十分庞大,本文只是介绍了整体架构和概念,想要详细查看ceph请看博文: Ceph介绍及原理架构分享 1.1 Ceph简介 ​ Ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。 1.2 Ceph架构 支持三种接口: Object:有原生的API,而且也兼容Swift和S3的API。 Block: 支持精简配置、快照、克隆。 File:Posix接口,支持快照。 1.2.1 架构介绍 1、ceph架构最底层是RADOS对象存储系统(Ceph最底层的存储单元是Object对象),外部想要访问该系统需要librados库。 2、ceph对外提供四种存储:应用直接访问RADOS、对象存储接口、块存储接口、文件系统接口;分别对应:代码直接访问、radosgw(rgw)、librbd(rbd)、元数据服务器(MDS) 1.3 Ceph核心组件及概念介绍 Monitor 一个Ceph集群需要多个Monitor组成的小集群,它们通过Paxos同步数据,用来保存OSD的元数据。 OSD OSD全称Object Storage Device

linux运维、架构之路-K8s应用

大憨熊 提交于 2019-12-06 14:32:01
一、Deployment k8s通过各种Controller管理Pod的生命周期,为了满足不同的业务场景,k8s提供了Deployment、ReplicaSet、DaemonSet、StatefuleSet、Job等多种资源类型。 1、创建应用演示 kubectl run nginx-deployment --image=nginx:1.7.9 --replicas=2 来源: https://www.cnblogs.com/yanxinjiang/p/11990107.html

python基础-网络编程part01

南楼画角 提交于 2019-12-06 14:31:47
软件开发架构 C/S(Client / Server) 架构 概念 :是一种软件系统体系结构。Client是客户端,Server是服务端。 客户端需要安装专用的客户端软件。 比如:微信、QQ、王者荣耀等应用程序就是C/S结构。 优点 :1)降低通信成本,节省网络资源;2)软件的使用相对稳定 缺点 :1)维护升级相对困难;2)安装麻烦,用户体验差 B/S(Browser/Server)架构 概念 :随着互联网的发展,web出现后兴起的一种网络结构模式。 安装浏览器后,就可以通过web Server与服务器进行数据交互 。比如:上百度搜索,浏览网页等就是使用“B/S”架构在进行数据交互。 浏览器本质上也是一个客户端,B/S 是基于C/S 的基础上实现的 优点 :1)维护和升级方式更便捷,只需维护升级服务器端即可;2)软件的使用方便 缺点 :1)依赖于网络,网络不稳定,软件就不稳定(现在网络发达,可忽略) 网络编程 计算机之间通信的介质是 互联网协议 。 互联网协议 按照功能不同可分为OSI七层或TCP/IP五层或TCP/IP四层 OSI(Open System Interconnection):开放式系统互联,把网络通信的工作分为7层,分别是 物理层,数据链路层,网络层,传输层,会话层,表示层,应用层 网络编程主要看TCP/IP五层 物理层: 获取到目的计算机的电信号数据 数据链路层:

性能优化总结篇

女生的网名这么多〃 提交于 2019-12-06 12:35:43
参加工作十一个年头了,从最初为团队的慢SQL做性能优化,到主导推动压力测试完成性能指标,再到后来紧急救火处理各类线上性能问题,对常见的性能问题及其分类在此也做个总结。有些人认为做性能优化并没有那么复杂,不就是做压力测试吗,然后哪里有性能瓶颈就解决哪里不就可以了吗?然而现实情况并不会如此简单,比如系统可能是遗留的老系统,也或者耦合过多不做一定的改造很难单独某个模块进行压力测试,甚至是压力测试中性能表现很好但线上却出了问题。在进行性能优化前你要对系统有个全局的认识,解决手段通常按紧迫程度也可以分即时参数调优类、短期编码救急类、长期架构优化类。 参数调优类按最常见出问题的顺序可分为: JVM参数调优、数据库连接池调优、Tomcat并发线程数等调优等 短期编码救急类的按出问题的顺序可分为: 慢SQL、不合理的循环操作、不合理的线程(池)模型、不合理的超时设置等 长期架构优化类的按出问题的顺序可分为: 应用单点设计、数据库单点设计、未异步化、长任务同步接口设计等 JVM参数调优可参考 《JVM垃圾回收那些事》 数据库连接池调优不同的连接池实现会有所不同,当然不同的连接池性能也差异不小,可自行搜索主流连接池性能基准测试结果对比 其他各类中间件的参数调优可参考阅读各中间件的user guide文档。 参数调优类性能优化见效最快,只要不是用了很偏门的中间件

网络编程

ぃ、小莉子 提交于 2019-12-06 12:31:59
网络编程 软件开发架构 C/S架构:Client(客户端),Server(服务端) CS架构:建立在局域网的基础上,需要安装客户端才能使用    C:客户端,比如微信端,QQ端    S:服务端,比如服务器    优点 :      1.软件的使用稳定      2.节省网络资源    缺点 :      1.安装麻烦,用户体验差      2.软件的每次更新,用户都需要重新下载或更新版本 B/S架构:Browser(本质上是个客户端),Server(服务端)    BS架构:即浏览器和服务器的架构模式,比如手机端微信小程序,不需要下载客户端    B:浏览器,本质上也是一个客户端,比如百度中的淘宝、镶嵌在浏览器中    优点:      1.软件的使用方便      2.无需跟着软件的更新去下载    缺点 :      1.如果网络不稳定,软件的使用就不稳定 比较流行的还是B/S框架,用户体验高 网络编程的发展史    起源:都源自于军事    远程通信条件:物理连接介质(电话线,网线,网卡)    有公共的标准协议:OSI协议    统一机器语言:二进制 OSI协议 OSI七层协议:    物理层      基于电信号传输 011100101 二进制数据,将数据扔给数据链接层    数据链接层      以太网协议:      1.规定电信号的组成方式:获取真实数据 hand

网络编程基础

百般思念 提交于 2019-12-06 12:24:00
目录 一、软件开发的架构 二、网络概念 三、互联网协议(OSI七层协议) 物理层 数据链路层 网络层 传输层 应用层 一、软件开发的架构 我们了解的涉及到两个程序之间通讯的应用大致可以分为两种: 第一种是应用类:qq、微信、网盘、优酷这一类是属于需要安装的桌面应用 第二种是web类:比如百度、知乎、博客园等使用浏览器访问就可以直接使用的应用 这些应用的本质其实都是两个程序之间的通讯。而这两个分类又对应了两个软件开发的架构~ 1.C/S架构 C/S即:Client与Server,中文意思:客户端与服务端架构,这种架构也是从用户层面(也可以是物理层面)来划分的 这里的客户端一般泛指客户端应用程序EXE,程序需要先安装后,才能运行在用户的电脑上,对用户的电脑操作系统环境依赖较大。 优点:软件的使用稳定 ​ 节省网络资源 缺点:安装麻烦,用户体验差 ​ 软件的每一次更新,用户都需要重新下载或更新版本 2.B/S架构 B/S即:Browser与Server,中文意思:浏览器端与服务器端架构,这种架构是从用户层面来划分的。 Browser浏览器,其实也是一种Client客户端,只是这个客户端不需要大家去安装什么应用程序,只需在浏览器上通过HTTP请求服务器端相关的资源(网页资源) 优点:软件的使用方便 ​ 无需跟着软件更新去下载 缺点:如果网络不稳定,软件的使用就不稳定 趋势:B/S架构流行

如何设计一个高并发系统?

送分小仙女□ 提交于 2019-12-06 12:20:25
作者:中华石杉 面试题 如何设计一个高并发系统? 面试官心理分析 说实话,如果面试官问你这个题目,那么你必须要使出全身吃奶劲了。为啥?因为你没看到现在很多公司招聘的 JD 里都是说啥,有高并发就经验者优先。 如果你确实有真才实学,在互联网公司里干过高并发系统,那你确实拿 offer 基本如探囊取物,没啥问题。面试官也绝对不会这样来问你,否则他就是蠢。 假设你在某知名电商公司干过高并发系统,用户上亿,一天流量几十亿,高峰期并发量上万,甚至是十万。那么人家一定会仔细盘问你的系统架构,你们系统啥架构?怎么部署的?部署了多少台机器?缓存咋用的? MQ 咋用的?数据库咋用的?就是深挖你到底是如何扛住高并发的。 因为真正干过高并发的人一定知道,脱离了业务的系统架构都是在纸上谈兵,真正在复杂业务场景而且还高并发的时候,那系统架构一定不是那么简单的,用个 redis,用 mq 就能搞定?当然不是,真实的系统架构搭配上业务之后,会比这种简单的所谓“高并发架构”要复杂很多倍。 如果有面试官问你个问题说,如何设计一个高并发系统?那么不好意思, 一定是因为你实际上没干过高并发系统 。面试官看你简历就没啥出彩的,感觉就不咋地,所以就会问问你,如何设计一个高并发系统?其实说白了本质就是看看你有没有自己研究过,有没有一定的知识积累。 最好的当然是招聘个真正干过高并发的哥儿们咯,但是这种哥儿们人数稀缺,不好招

数据库三层架构

五迷三道 提交于 2019-12-06 11:41:29
一:什么是数据库架构 DBMS体系结构有助于数据库的设计,开发,实现和维护,数据库可以存储企业的关键信息,选择正确的数据库体系结构有助于快速安全地访问数据。 二:数据库架构有几层 1层架构 最简单的数据库体系结构是1层,其中客户端,服务器和数据库都驻留在同一台机器上。无论何时在系统中安装数据库并访问,都是1层架构,但这种架构很少用于生产。 2层架构 双层体系结构是一种数据库体系结构,表示层在客户端(PC,移动设备,平板电脑等)上运行数据存储在服务器上。 一种称为ODBC(开放式数据库连接)的应用程序接口,它允许客户端程序调用DBMS,在今天,大多数DBMS为DBMS提供ODBC驱动程序, 并且2层架构为DBMS提供了额外的安全性,因为它不直接向最终用户公开。目前双层体系结构的示例就是使用MS-Access创建的联系人管理系统。 3层架构 3层架构是2层架构的扩展。3层架构具有以下层, 表示层(PC,平板电脑,手机等) 应用层(服务器) 数据库服务器 该DBMS体系结构在用户和DBMS之间包含一个Application层,它负责将用户的请求传递给DBMS系统,并将响应从DBMS发送给用户,应用程序层(业务逻辑层)还在将数据传递给用户或向下传递到DBMS之前处理功能逻辑,约束和规则 三层体系结构是最流行的DBMS体系结构。 三:总结 DBMS体系结构有助于数据库的设计,开发,实现和维护

你真的知道聊天室架构设计这两个问题吗?

帅比萌擦擦* 提交于 2019-12-06 11:39:49
上篇我们介绍了下面这个简单的语音聊天室的架构,遗留了两个问题。首先, 语音服务器是怎么转发语音数据的? 我们直接上图。图中虚线框表示连接到同一台语音服务器。当A说话的时候,客户端将语音数据上传到A所连接的语音服务器;语音服务器向房间服务器查询A所在房间的其他用户(B-E)所在的语音服务器IP,分几种情况:对于同服务器用户B只需要下发语音数据,对于其他服务器上的用户(C-E)需要转发给相应的语音服务器,其他语音服务器收到转发数据后,根据房间信息,下发给同房间的用户。 有一个细节需要注意, 房间服务器是主动给语音服务器同步房间架构的 。因为语音服务请求量非常大,如果每次转发的时候都查询房间架构信息,那么房间服务器/数据库将成为瓶颈。因此语音服务器本地缓存了房间架构信息(当然缓存也会导致其他的问题,以后会专门讨论)。缓存的同步机制采用用户进退房主动触发房间服务器广播和房间服务器定期推送相结合,这样可以有效 保证网络丢包情况下的数据一致性 。 另外一个问题是 目录服务器是否有点多余? 答案自然是否定的。当同一房间用户量还比较少的情况下,目录服务器的确可以省略,客户端可以通过DNS解析域名得到语音服务器的IP地址进行连接。 但是,当用户量非常大的时候,DNS缓慢的刷新机制不能满足快速扩容和缩容。目录服务器还有一个重要的作用是 负载均衡 ,相比DNS手工配置的简单的负载均衡策略