通常网络电话中说的落地是什么意思?

通常网络电话中说的落地是什么意思?,第1张

当你用网络电话软件或者设备(语音网关)往外打电话的时候,其实是软件先把数据转发给了服务器(网守),网守检查你打的是外线还是内线,如果是外线,比如打的手机,那么服务器就要把数据发送给中继网关,中继网关再把电话接入到通讯网中,如果你拨打的不是固定电话或者手机,还是内线的话,就直接把数据发给另一个网络电话设备了,这个时候就不需要经过中继网关听到这里你明白了吧 落地相对于语音网关 语音网关把电话信号转换成网络信号,而落地则相反,负责把网络信号转换成普通电话信号 想了解更深的话,你多弄明白几个名词就好了比如:gateway gatekeeper E1 等等关于落地的概念就解释到这里

AIOps如何落地,还是以具体案例来说比较容易理解。就拿擎创为北京农村商业银行做的项目来说。

项目背景:

近年来数字化转型的步伐愈发变快,随着北京农村商业银行业务规模的扩增以及业务形式的电子化加速,贯穿业务、市场、系统、应用、数据库、中间件、网络、安全等多方面的数据量迅速叠加堆积。然而,这些对于市场而言极具价值的巨量化数据并不集中,它们分散在银行的各中心服务器或设备之中,这使得银行的数据运维工作量越来越大,尤其是在日志的统一管理、监控、信息挖掘等方面极为明显。因此,北京农村商业银行对于信息技术提升和数据管理加强的需求日益加深。

根据监管部门对银行数据治理的相关指引以及中国银监会《商业银行信息科技风险管理指引》(银监发〔2009〕19号)中针对日志文件完整性、存留周期的相关要求,北京农村商业银行最终选择擎创科技助力其完善智能运维建设,保障其业务的平稳高效运行。

解决方案:

根据北京农村商业银行的需求以及现状,擎创科技通过以下手段为其建设运维大数据平台。

通过现分布式高可用,支持横向扩展,随着业务需要随时扩容平台节点;

通过高效数据采集手段,实现对现有IT环境的实时数据采集,打破各个孤立运维工具中的数据孤岛;

对所有运维数据进行集中高效的存储、查询及可视化展示;

支持结构化、非结构化的数据采集支撑;

内置AI智能日志分析引擎,实现日志异常检测、日志异常定位并辅助故障定位。

平台架构图如下:

创新点:

北京农村商业银行在运维大数据平台项目的建设中,采用流批一体的处理技术、流式窗口聚合方式,实现了实时采集、秒级处理、秒级查询,为运维人员提供高效的数据查询手段,为应用人员实现交易数据与日志的深度结合;

采用智能算法判断、故障根因定位,为运维人员提供便捷数据分析工具。充分挖掘了北京农村商业银行的运维数据价值、提升了运维管理水平、提高了运维效率。

建设成效:

建设日志治理平台和大数据平台,实现日志数据统一集中管理、KPI动态异常检测、日志智能聚类等功能。

日志治理+大数据平台(算法),当前日增日志6TB,设计容量10TB,热数据保存30天、冷数据保存3个月,大数据平台日志存档一年、指标类数据两年;

最高峰每秒处理日志500万条日志,其中最高按单笔业务交易日志行数达3000+行,经采集、数据提取、数据合并、数据丰富等数据处理后延时小于1s。

总结:

随着运维大数据平台的建设完成,北京农村商业银行实现了对各类运维日志数据的统一管理,能够对日志进行集中查询、聚类分析、快速分析、精细化分析等 *** 作,结合监控告警的智能化处理,可以做到事前智能预警、事后快速定位故障并分析,进一步提升了银行数据中心的运维管理水平。

收件服务器是指电子邮件接收邮件的服务器,在新建和发送电子邮件的时候需要电子邮件进行收发件服务器名称以及端口号的设置。

资料拓展

邮件收发过程

(1)发件人调用用户代理编辑要发送的邮件。

(2)发件人点击屏幕上的”发送邮件“按钮,把发送邮件的 工作全部交给用户代理来完成。用户代理通过SMTP协议将邮件发送给发送方的邮件服务器(在这个过程中,用户代理充当SMTP客户,而发送方的邮件服务器则充当SMTP服务器 )。

(3)发送方的邮件服务器收到用户代理发来的邮件后,就把收到的邮件临时存放在邮件缓存队列中,等待时间成熟的时候再发送到接收方的邮件服务器(等待时间的长短取决于邮件服务器的处理能力和队列中待发送的信件的数量 )。

(4)若现在时机成熟了,发送方的邮件服务器则向接收方的邮件服务器发送邮件缓存中的邮件。在发送邮件之前,发送方的邮件服务器的SMTP客户与接收方的邮件服务器的SMTP服务器需要事先建立TCP连接,之后再将队列中 的邮件发送出去。值得注意的是,邮件不会在因特网中的某个中间邮件服务器落地 。

(5)接收邮件服务器中的SMTP服务器进程在收到邮件后,把邮件放入收件人的用户邮箱中,等待收件人进行读取。

(6)收件人在打算收信时,就运行PC机中的用户代理,使用POP3(或IMAP)协议读取发送给自己的邮件。 注意,在这个过程中,收件人是POP3客户,而接收邮件服务器则是POP3客户,箭头的方向是从邮件服务器指向接收用户,因为这是一个“拉 ”的 *** 作 。

随着时间和业务的发展,数据库中的数据量增长是不可控的,库和表中的数据会越来越大,随之带来的是更高的 磁盘 IO 系统开销 ,甚至 性能 上的瓶颈,而单台服务器的 资源终究是有限 的。

因此在面对业务扩张过程中,应用程序对数据库系统的 健壮性 安全性 扩展性 提出了更高的要求。

以下,我从数据库架构、选型与落地来让大家入门。

数据库会面临什么样的挑战呢?

业务刚开始我们只用单机数据库就够了,但随着业务增长,数据规模和用户规模上升,这个时候数据库会面临IO瓶颈、存储瓶颈、可用性、安全性问题。

为了解决上述的各种问题,数据库衍生了出不同的架构来解决不同的场景需求。

将数据库的写 *** 作和读 *** 作分离,主库接收写请求,使用多个从库副本负责读请求,从库和主库同步更新数据保持数据一致性,从库可以水平扩展,用于面对读请求的增加。

这个模式也就是常说的读写分离,针对的是小规模数据,而且存在大量读 *** 作的场景。

因为主从的数据是相同的,一旦主库宕机的时候,从库可以 切换为主库提供写入 ,所以这个架构也可以提高数据库系统的 安全性 可用性

优点:

缺点:

在数据库遇到 IO瓶颈 过程中,如果IO集中在某一块的业务中,这个时候可以考虑的就是垂直分库,将热点业务拆分出去,避免由 热点业务 密集IO请求 影响了其他正常业务,所以垂直分库也叫 业务分库

优点:

缺点:

在数据库遇到存储瓶颈的时候,由于数据量过大造成索引性能下降。

这个时候可以考虑将数据做水平拆分,针对数据量巨大的单张表,按照某种规则,切分到多张表里面去。

但是这些表还是在同一个库中,所以库级别的数据库 *** 作还是有IO瓶颈(单个服务器的IO有上限)。

所以水平分表主要还是针对 数据量较大 ,整体业务 请求量较低 的场景。

优点:

缺点:

四、分库分表

在数据库遇到存储瓶颈和IO瓶颈的时候,数据量过大造成索引性能下降,加上同一时间需要处理大规模的业务请求,这个时候单库的IO上限会限制处理效率。

所以需要将单张表的数据切分到多个服务器上去,每个服务器具有相应的库与表,只是表中数据集合不同。

分库分表能够有效地缓解单机和单库的 性能瓶颈和压力 ,突破IO、连接数、硬件资源等的瓶颈。

优点:

缺点:

注:分库还是分表核心关键是有没有IO瓶颈

分片方式都有什么呢?

RANGE(范围分片)

将业务表中的某个 关键字段排序 后,按照顺序从0到10000一个表,10001到20000一个表。最常见的就是 按照时间切分 (月表、年表)。

比如将6个月前,甚至一年前的数据切出去放到另外的一张表,因为随着时间流逝,这些表的数据被查询的概率变小,银行的交易记录多数是采用这种方式。

优点:

缺点:

HASH(哈希分片)

将订单作为主表,然后将其相关的业务表作为附表,取用户id然后 hash取模 ,分配到不同的数据表或者数据库上。

优点:

缺点:

讲到这里,我们已经知道数据库有哪些架构,解决的是哪些问题,因此, 我们在日常设计中需要根据数据的特点,数据的倾向性,数据的安全性等来选择不同的架构

那么,我们应该如何选择数据库架构呢?

虽然把上面的架构全部组合在一起可以形成一个强大的高可用,高负载的数据库系统,但是架构选择合适才是最重要的。

混合架构虽然能够解决所有的场景的问题,但是也会面临更多的挑战,你以为的完美架构,背后其实有着更多的坑。

1、对事务支持

分库分表后(无论是垂直还是水平拆分),就成了分布式事务了,如果依赖数据库本身的分布式事务管理功能去执行事务,将付出高昂的性能代价(XA事务);如果由应用程序去协助控制,形成程序逻辑上的事务,又会造成编程方面的负担(TCC、SAGA)。

2、多库结果集合并 (group by,order by)

由于数据分布于不同的数据库中,无法直接对其做分页、分组、排序等 *** 作,一般应对这种多库结果集合并的查询业务都需要采用数据清洗、同步等其他手段处理(TIDB、KUDU等)。

3、数据延迟

主从架构下的多副本机制和水平分库后的聚合库都会存在主数据和副本数据之间的延迟问题。

4、跨库join

分库分表后表之间的关联 *** 作将受到限制,我们无法join位于不同分库的表(垂直),也无法join分表粒度不同的表(水平), 结果原本一次查询就能够完成的业务,可能需要多次查询才能完成。

5、分片扩容

水平分片之后,一旦需要做扩容时。需要将对应的数据做一次迁移,成本代价都极高的。

6、ID生成

分库分表后由于数据库独立,原有的基于数据库自增ID将无法再使用,这个时候需要采用其他外部的ID生成方案。

一、应用层依赖类(JDBC)

这类分库分表中间件的特点就是和应用强耦合,需要应用显示依赖相应的jar包(以Java为例),比如知名的TDDL、当当开源的 sharding-jdbc 、蘑菇街的TSharding等。

此类中间件的基本思路就是重新实现JDBC的API,通过重新实现 DataSource PrepareStatement 等 *** 作数据库的接口,让应用层在 基本 不改变业务代码的情况下透明地实现分库分表的能力。

中间件给上层应用提供熟悉的JDBC API,内部通过 sql解析 sql重写 sql路由 等一系列的准备工作获取真正可执行的sql,然后底层再按照传统的方法(比如数据库连接池)获取物理连接来执行sql,最后把数据 结果合并 处理成ResultSet返回给应用层。

优点

缺点

二、中间层代理类(Proxy)

这类分库分表中间件的核心原理是在应用和数据库的连接之间搭起一个 代理层 ,上层应用以 标准的MySQL协议 来连接代理层,然后代理层负责 转发请求 到底层的MySQL物理实例,这种方式对应用只有一个要求,就是只要用MySQL协议来通信即可。

所以用MySQL Navicat这种纯的客户端都可以直接连接你的分布式数据库,自然也天然 支持所有的编程语言

在技术实现上除了和应用层依赖类中间件基本相似外,代理类的分库分表产品必须实现标准的MySQL协议,某种意义上讲数据库代理层转发的就是MySQL协议请求,就像Nginx转发的是>首先要知道游戏类型是什么,然后知道承载人数是多少,以及开发周期多少。需要根据这些来决定游戏架构和技术选型。

对于gameplay来说,本身就是个大循环,一定频率进行tick,接收来客户端或者其他服务器的rpc,处理逻辑,然后数据落地以及发送数据给客户端或者其他服务器,一般gameplay来说在同一个进程里都是同步的方式去编写,同步的实现大多数是单线程的,或者使用coroutine来实现actor这种模式。大部分游戏交互都是比较多,所以不论service和service之间的交互还是玩家和玩家之间的交互,如果考虑多线程的同步的问题,会非常复杂以及很容易做错,所以一个service内同一个时刻都是在一个线程中执行的。

针对mmo或者一些竞技类游戏往往有场景管理的概念,就是游戏AOI,比如一个玩家移动,需要告诉周围所有的玩家,复杂度在nn,如果减少这个n,就有了AOI算法,比如九宫格,十字链表等,如果刚开服的时候很多人挤到一个主城中,就算采用九宫格和十字链表等AOI等算法,往往同屏内玩家数量还是很大,客户端渲染的单位数量比服务器少一个数量级的,所以场景管理这里还可以有个分线的做法,玩家多的时候,不同线不可见,玩家少的时候进行合并。

如果做帧同步一些关键点为表现要和逻辑分离,随机算法和随机种子的一致性,数学库浮点换定点,三角函数采用泰勒展开或者查表法,需要保序的容器,timer不能基于钟表时间而需要帧timer,以及防作弊(一般都是投票法,或者服务器跑个验证端)

现在很多游戏在线更新bug甚至不停服更新慢慢变成一种强需求了,实现这种方式主要使用脚本热更新,热重启+逻辑内存以及ab服切换来实现。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zz/13437328.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-06
下一篇 2023-08-06

发表评论

登录后才能评论

评论列表(0条)

保存