• 关于 数据层问题怎么解决 的搜索结果

回答

1 try catch能解决异常导致程序退出的问题,但是没法解决卡死的问题,要解决卡死的问题,你需要开一个线程,在线程里面连接判断。同时把connection对象的timeout设置地小一些。2 如果是C#,用sqlparamater,这样可以防止sql拼接引起的注入问题。同时,对于敏感的业务,建议在服务器对格式和内容做额外的判断。性能没有你想得那么严重。再说再怎么考虑性能,首先正确性是第一的。3 对密码做md5编码,然后把编码后的值存入数据库。登录判断的时候,对用户输入的密码也做md5,和存在数据库的比较。避免垃圾数据一个是你的业务层的过滤和判断,一个是完善的日志,使得一旦有人搞破坏,你可以及时发现,并且用技术以外的手段追究他。

51干警网 2019-12-02 01:34:56 0 浏览量 回答数 0

回答

1 try catch能解决异常导致程序退出的问题,但是没法解决卡死的问题,要解决卡死的问题,你需要开一个线程,在线程里面连接判断。同时把connection对象的timeout设置地小一些。2 如果是C#,用sqlparamater,这样可以防止sql拼接引起的注入问题。同时,对于敏感的业务,建议在服务器对格式和内容做额外的判断。性能没有你想得那么严重。再说再怎么考虑性能,首先正确性是第一的。3 对密码做md5编码,然后把编码后的值存入数据库。登录判断的时候,对用户输入的密码也做md5,和存在数据库的比较。避免垃圾数据一个是你的业务层的过滤和判断,一个是完善的日志,使得一旦有人搞破坏,你可以及时发现,并且用技术以外的手段追究他。

a123456678 2019-12-02 02:18:17 0 浏览量 回答数 0

回答

有人帮忙吗 ###### preview旋转90度的问题 我也在找解决方案, 图像拉伸的问题,需要你将你surfaceView的长宽比例,与preview的长宽比例一样,同时还要求holder.setFixedSize( ); 这个函数设置的长宽比例是正确的,就可以解决图像拉伸的问题了。 有一个注意的是,那个通过camera.params设置的长宽 是不一定生效的,比如相机提供的比值为4:3 你设置长宽为 640*640,他最后照出来的照片是640*480的,这就需要你自己特殊处理了######怎么样啊,第一个问题解决了吗###### setPreviewSize是设置到底层的预览帧的大小,这个大小的预览数据最后和上层预览框数据一起送到MDP显示,跟你上层应用的预览界面(框)没有必然关系,但一般的APK会要求它们俩个宽高比相同(出现图像拉伸情况的有可能就是比例不相同造成的)。 图像旋转的问题,如果你有ROOT,可以从中间层拿出YUV数据来看一下是不是正常?或者跑一下MMI测试看有没有这个问题

kun坤 2020-06-08 14:54:14 0 浏览量 回答数 0

海外云虚拟主机包年25元/月起

海外独享虚拟主机全面上线,助力构建海外网站,提升公司国际形象;全球有效覆盖,超高性价比;建站入门首选,助力出口,适合跨境贸易企业。

回答

我觉得有两个层面:业务层面和系统层面。业务层面我不是很好回答,因为这个业务层面肯定是跟你的业务逻辑有关系的,比如说财务系统和工作流系统,这两个数据要怎么打通?数据打通之后要支持什么样的应用?这些一定是跟你的企业的业务逻辑有强相关性的,它不是一个跟业务逻辑解耦的一件事。所以我没有办法直接说明这个在业务层面怎么操作。 但在系统层面,不根据业务逻辑,一个统一的平台一个接口层可以把一个多元异构的数据。比如说财务系统和工作流系统,甚至可以将两个底层的数据库系统都不一样,财务系统可能用的是一个OLTP的数据库MySQL或者PG,但在工作流系统用的是MongoDB一样的东西,这里面有个解决方案是说可以考虑用数据湖的概念把他们打通,也是我们的一个核心产品,也是业界现在比较火的技术。可以把传统的数据仓库像ADB它是一个云原生的数据仓库和数据湖的概念叠加在一起,可以支持多元异构的建仓然后去做查询和分析。向我们是把ADB和DLA结合起来,像的云原生数据库和云原生数据湖两者结合起来,完美的解决这个问题。DLA可以支持多元异构的数据支持和数据访问,它的特点是数据就可以待在原来的地方,这个是可以考虑的一个方向。

问问小秘 2020-05-22 11:53:09 0 浏览量 回答数 0

问题

dubbo 的工作原理?注册中心挂了的问题?说说一次 rpc 请求的流程?【Java问答】47期

剑曼红尘 2020-06-30 09:02:47 8 浏览量 回答数 1

回答

分片事务,基本概念没了解###### 整得这么高大上,如果只是想多个数据库事务,可以参考和采用bboss持久层的事务框架来管理多数据库事务: bboss持久层多数据源配置及多数据库事务控制使用方法  补充一下,bboss的全局事务管理框架还可以托管spring jdbc,ibatis/mybatis,hibernate等第三方持久层框架的事务呢 ######找到原因了吗?######回复 @王柏宇 : 2年前的项目了,给忘了。可以的话,贴上你的代码给大家看看~~###### @Alex.Wong 同样遇到了这个问题,请问你是怎么解决的 ?######回复 @Alex.Wong : 哪块事物没加啊,日志里面都有rollback com.atomikos.icatch.imp.CompositeTransactionImp [Slf4jLogger.java:16] - rollback() done of transaction 192.168.1.33.tm0000300031######找到了,没加事务

montos 2020-05-31 19:30:28 0 浏览量 回答数 0

回答

分片事务,基本概念没了解###### 整得这么高大上,如果只是想多个数据库事务,可以参考和采用bboss持久层的事务框架来管理多数据库事务: bboss持久层多数据源配置及多数据库事务控制使用方法  补充一下,bboss的全局事务管理框架还可以托管spring jdbc,ibatis/mybatis,hibernate等第三方持久层框架的事务呢 ######找到原因了吗?######回复 @王柏宇 : 2年前的项目了,给忘了。可以的话,贴上你的代码给大家看看~~######@Alex.Wong 同样遇到了这个问题,请问你是怎么解决的 ?######回复 @Alex.Wong : 哪块事物没加啊,日志里面都有rollback com.atomikos.icatch.imp.CompositeTransactionImp [Slf4jLogger.java:16] - rollback() done of transaction 192.168.1.33.tm0000300031######找到了,没加事务

kun坤 2020-05-28 16:17:36 0 浏览量 回答数 0

回答

分片事务,基本概念没了解###### 整得这么高大上,如果只是想多个数据库事务,可以参考和采用bboss持久层的事务框架来管理多数据库事务: bboss持久层多数据源配置及多数据库事务控制使用方法  补充一下,bboss的全局事务管理框架还可以托管spring jdbc,ibatis/mybatis,hibernate等第三方持久层框架的事务呢 ######找到原因了吗?######回复 @王柏宇 : 2年前的项目了,给忘了。可以的话,贴上你的代码给大家看看~~###### @Alex.Wong 同样遇到了这个问题,请问你是怎么解决的 ?######回复 @Alex.Wong : 哪块事物没加啊,日志里面都有rollback com.atomikos.icatch.imp.CompositeTransactionImp [Slf4jLogger.java:16] - rollback() done of transaction 192.168.1.33.tm0000300031######找到了,没加事务

kun坤 2020-06-07 10:37:41 0 浏览量 回答数 0

回答

"分片事务,基本概念没了解###### 整得这么高大上,如果只是想多个数据库事务,可以参考和采用bboss持久层的事务框架来管理多数据库事务: bboss持久层多数据源配置及多数据库事务控制使用方法  补充一下,bboss的全局事务管理框架还可以托管spring jdbc,ibatis/mybatis,hibernate等第三方持久层框架的事务呢 ######找到原因了吗?######回复 @王柏宇 : 2年前的项目了,给忘了。可以的话,贴上你的代码给大家看看~~###### @Alex.Wong 同样遇到了这个问题,请问你是怎么解决的 ?######回复 @Alex.Wong : 哪块事物没加啊,日志里面都有rollback com.atomikos.icatch.imp.CompositeTransactionImp [Slf4jLogger.java:16] - rollback() done of transaction 192.168.1.33.tm0000300031######找到了,没加事务"

montos 2020-05-31 10:51:32 0 浏览量 回答数 0

问题

私有云跨服务获取数据的性能问题 400 请求报错 

kun坤 2020-05-29 11:26:21 2 浏览量 回答数 1

回答

在开始谈我对架构本质的理解之前,先谈谈对今天技术沙龙主题的个人见解,千万级规模的网站感觉数量级是非常大的,对这个数量级我们战略上 要重 视 它 , 战术上又 要 藐 视 它。先举个例子感受一下千万级到底是什么数量级?现在很流行的优步(Uber),从媒体公布的信息看,它每天接单量平均在百万左右, 假如每天有10个小时的服务时间,平均QPS只有30左右。对于一个后台服务器,单机的平均QPS可以到达800-1000,单独看写的业务量很简单 。为什么我们又不能说轻视它?第一,我们看它的数据存储,每天一百万的话,一年数据量的规模是多少?其次,刚才说的订单量,每一个订单要推送给附近的司机、司机要并发抢单,后面业务场景的访问量往往是前者的上百倍,轻松就超过上亿级别了。 今天我想从架构的本质谈起之后,希望大家理解在做一些建构设计的时候,它的出发点以及它解决的问题是什么。 架构,刚开始的解释是我从知乎上看到的。什么是架构?有人讲, 说架构并不是一 个很 悬 乎的 东西 , 实际 上就是一个架子 , 放一些 业务 和算法,跟我们的生活中的晾衣架很像。更抽象一点,说架构其 实 是 对 我 们 重复性业务 的抽象和我 们 未来 业务 拓展的前瞻,强调过去的经验和你对整个行业的预见。 我们要想做一个架构的话需要哪些能力?我觉得最重要的是架构师一个最重要的能力就是你要有 战 略分解能力。这个怎么来看呢: 第一,你必须要有抽象的能力,抽象的能力最基本就是去重,去重在整个架构中体现在方方面面,从定义一个函数,到定义一个类,到提供的一个服务,以及模板,背后都是要去重提高可复用率。 第二, 分类能力。做软件需要做对象的解耦,要定义对象的属性和方法,做分布式系统的时候要做服务的拆分和模块化,要定义服务的接口和规范。 第三, 算法(性能),它的价值体现在提升系统的性能,所有性能的提升,最终都会落到CPU,内存,IO和网络这4大块上。 这一页PPT举了一些例子来更深入的理解常见技术背后的架构理念。 第一个例子,在分布式系统我们会做 MySQL分 库 分表,我们要从不同的库和表中读取数据,这样的抽象最直观就是使用模板,因为绝大多数SQL语义是相同的,除了路由到哪个库哪个表,如果不使用Proxy中间件,模板就是性价比最高的方法。 第二看一下加速网络的CDN,它是做速度方面的性能提升,刚才我们也提到从CPU、内存、IO、网络四个方面来考虑,CDN本质上一个是做网络智能调度优化,另一个是多级缓存优化。 第三个看一下服务化,刚才已经提到了,各个大网站转型过程中一定会做服务化,其实它就是做抽象和做服务的拆分。第四个看一下消息队列,本质上还是做分类,只不过不是两个边际清晰的类,而是把两个边际不清晰的子系统通过队列解构并且异步化。新浪微博整体架构是什么样的 接下我们看一下微博整体架构,到一定量级的系统整个架构都会变成三层,客户端包括WEB、安卓和IOS,这里就不说了。接着还都会有一个接口层, 有三个主要作用: 第一个作用,要做 安全隔离,因为前端节点都是直接和用户交互,需要防范各种恶意攻击; 第二个还充当着一个 流量控制的作用,大家知道,在2014年春节的时候,微信红包,每分钟8亿多次的请求,其实真正到它后台的请求量,只有十万左右的数量级(这里的数据可能不准),剩余的流量在接口层就被挡住了; 第三,我们看对 PC 端和移 动 端的需求不一样的,所以我们可以进行拆分。接口层之后是后台,可以看到微博后台有三大块: 一个是 平台服 务, 第二, 搜索, 第三, 大数据。到了后台的各种服务其实都是处理的数据。 像平台的业务部门,做的就是 数据存储和读 取,对搜索来说做的是 数据的 检 索,对大数据来说是做的数据的 挖掘。微博其实和淘宝是很类似 微博其实和淘宝是很类似的。一般来说,第一代架构,基本上能支撑到用户到 百万 级别,到第二代架构基本能支撑到 千万 级别都没什么问题,当业务规模到 亿级别时,需要第三代的架构。 从 LAMP 的架构到面向服 务 的架构,有几个地方是非常难的,首先不可能在第一代基础上通过简单的修修补补满足用户量快速增长的,同时线上业务又不能停, 这是我们常说的 在 飞 机上 换 引擎的 问题。前两天我有一个朋友问我,说他在内部推行服务化的时候,把一个模块服务化做完了,其他部门就是不接。我建议在做服务化的时候,首先更多是偏向业务的梳理,同时要找准一个很好的切入点,既有架构和服务化上的提升,业务方也要有收益,比如提升性能或者降低维护成本同时升级过程要平滑,建议开始从原子化服务切入,比如基础的用户服务, 基础的短消息服务,基础的推送服务。 第二,就是可 以做无状 态 服 务,后面会详细讲,还有数据量大了后需要做数据Sharding,后面会将。 第三代 架构 要解决的 问题,就是用户量和业务趋于稳步增加(相对爆发期的指数级增长),更多考虑技术框架的稳定性, 提升系统整体的性能,降低成本,还有对整个系统监控的完善和升级。 大型网站的系统架构是如何演变的 我们通过通过数据看一下它的挑战,PV是在10亿级别,QPS在百万,数据量在千亿级别。我们可用性,就是SLA要求4个9,接口响应最多不能超过150毫秒,线上所有的故障必须得在5分钟内解决完。如果说5分钟没处理呢?那会影响你年终的绩效考核。2015年微博DAU已经过亿。我们系统有上百个微服务,每周会有两次的常规上线和不限次数的紧急上线。我们的挑战都一样,就是数据量,bigger and bigger,用户体验是faster and faster,业务是more and more。互联网业务更多是产品体验驱动, 技 术 在 产 品 体验上最有效的贡献 , 就是你的性能 越来越好 。 每次降低加载一个页面的时间,都可以间接的降低这个页面上用户的流失率。微博的技术挑战和正交分解法解析架构 下面看一下 第三代的 架构 图 以及 我 们 怎么用正交分解法 阐 述。 我们可以看到我们从两个维度,横轴和纵轴可以看到。 一个 维 度 是 水平的 分层 拆分,第二从垂直的维度会做拆分。水平的维度从接口层、到服务层到数据存储层。垂直怎么拆分,会用业务架构、技术架构、监控平台、服务治理等等来处理。我相信到第二代的时候很多架构已经有了业务架构和技术架构的拆分。我们看一下, 接口层有feed、用户关系、通讯接口;服务层,SOA里有基层服务、原子服务和组合服务,在微博我们只有原子服务和组合服务。原子服务不依赖于任何其他服务,组合服务由几个原子服务和自己的业务逻辑构建而成 ,资源层负责海量数据的存储(后面例子会详细讲)。技 术框架解决 独立于 业务 的海量高并发场景下的技术难题,由众多的技术组件共同构建而成 。在接口层,微博使用JERSY框架,帮助你做参数的解析,参数的验证,序列化和反序列化;资源层,主要是缓存、DB相关的各类组件,比如Cache组件和对象库组件。监 控平台和服 务 治理 , 完成系统服务的像素级监控,对分布式系统做提前诊断、预警以及治理。包含了SLA规则的制定、服务监控、服务调用链监控、流量监控、错误异常监控、线上灰度发布上线系统、线上扩容缩容调度系统等。 下面我们讲一下常见的设计原则。 第一个,首先是系统架构三个利器: 一个, 我 们 RPC 服 务组 件 (这里不讲了), 第二个,我们 消息中 间 件 。消息中间件起的作用:可以把两个模块之间的交互异步化,其次可以把不均匀请求流量输出为匀速的输出流量,所以说消息中间件 异步化 解耦 和流量削峰的利器。 第三个是配置管理,它是 代码级灰度发布以及 保障系统降级的利器。 第二个 , 无状态 , 接口 层 最重要的就是无状 态。我们在电商网站购物,在这个过程中很多情况下是有状态的,比如我浏览了哪些商品,为什么大家又常说接口层是无状态的,其实我们把状态从接口层剥离到了数据层。像用户在电商网站购物,选了几件商品,到了哪一步,接口无状态后,状态要么放在缓存中,要么放在数据库中, 其 实 它并不是没有状 态 , 只是在 这 个 过 程中我 们 要把一些有状 态 的 东 西抽离出来 到了数据层。 第三个, 数据 层 比服 务层 更需要 设计,这是一条非常重要的经验。对于服务层来说,可以拿PHP写,明天你可以拿JAVA来写,但是如果你的数据结构开始设计不合理,将来数据结构的改变会花费你数倍的代价,老的数据格式向新的数据格式迁移会让你痛不欲生,既有工作量上的,又有数据迁移跨越的时间周期,有一些甚至需要半年以上。 第四,物理结构与逻辑结构的映射,上一张图看到两个维度切成十二个区间,每个区间代表一个技术领域,这个可以看做我们的逻辑结构。另外,不论后台还是应用层的开发团队,一般都会分几个垂直的业务组加上一个基础技术架构组,这就是从物理组织架构到逻辑的技术架构的完美的映射,精细化团队分工,有利于提高沟通协作的效率 。 第五, www .sanhao.com 的访问过程,我们这个架构图里没有涉及到的,举个例子,比如当你在浏览器输入www.sanhao网址的时候,这个请求在接口层之前发生了什么?首先会查看你本机DNS以及DNS服务,查找域名对应的IP地址,然后发送HTTP请求过去。这个请求首先会到前端的VIP地址(公网服务IP地址),VIP之后还要经过负载均衡器(Nginx服务器),之后才到你的应用接口层。在接口层之前发生了这么多事,可能有用户报一个问题的时候,你通过在接口层查日志根本发现不了问题,原因就是问题可能发生在到达接口层之前了。 第六,我们说分布式系统,它最终的瓶颈会落在哪里呢?前端时间有一个网友跟我讨论的时候,说他们的系统遇到了一个瓶颈, 查遍了CPU,内存,网络,存储,都没有问题。我说你再查一遍,因为最终你不论用上千台服务器还是上万台服务器,最终系统出瓶颈的一定会落在某一台机(可能是叶子节点也可能是核心的节点),一定落在CPU、内存、存储和网络上,最后查出来问题出在一台服务器的网卡带宽上。微博多级双机房缓存架构 接下来我们看一下微博的Feed多级缓存。我们做业务的时候,经常很少做业务分析,技术大会上的分享又都偏向技术架构。其实大家更多的日常工作是需要花费更多时间在业务优化上。这张图是统计微博的信息流前几页的访问比例,像前三页占了97%,在做缓存设计的时候,我们最多只存最近的M条数据。 这里强调的就是做系统设计 要基于用 户 的 场 景 , 越细致越好 。举了一个例子,大家都会用电商,电商在双十一会做全国范围内的活动,他们做设计的时候也会考虑场景的,一个就是购物车,我曾经跟相关开发讨论过,购物车是在双十一之前用户的访问量非常大,就是不停地往里加商品。在真正到双十一那天他不会往购物车加东西了,但是他会频繁的浏览购物车。针对这个场景,活动之前重点设计优化购物车的写场景, 活动开始后优化购物车的读场景。 你看到的微博是由哪些部分聚合而成的呢?最右边的是Feed,就是微博所有关注的人,他们的微博所组成的。微博我们会按照时间顺序把所有关注人的顺序做一个排序。随着业务的发展,除了跟时间序相关的微博还有非时间序的微博,就是会有广告的要求,增加一些广告,还有粉丝头条,就是拿钱买的,热门微博,都会插在其中。分发控制,就是说和一些推荐相关的,我推荐一些相关的好友的微博,我推荐一些你可能没有读过的微博,我推荐一些其他类型的微博。 当然对非时序的微博和分发控制微博,实际会起多个并行的程序来读取,最后同步做统一的聚合。这里稍微分享一下, 从SNS社交领域来看,国内现在做的比较好的三个信息流: 微博 是 基于弱关系的媒体信息流 ; 朋友圈是基于 强 关系的信息流 ; 另外一个做的比 较 好的就是今日 头 条 , 它并不是基于关系来构建信息流 , 而是基于 兴趣和相关性的个性化推荐 信息流 。 信息流的聚合,体现在很多很多的产品之中,除了SNS,电商里也有信息流的聚合的影子。比如搜索一个商品后出来的列表页,它的信息流基本由几部分组成:第一,打广告的;第二个,做一些推荐,热门的商品,其次,才是关键字相关的搜索结果。 信息流 开始的时候 很 简单 , 但是到后期会 发现 , 你的 这 个流 如何做控制分发 , 非常复杂, 微博在最近一两年一直在做 这样 的工作。刚才我们是从业务上分析,那么技术上怎么解决高并发,高性能的问题?微博访问量很大的时候,底层存储是用MySQL数据库,当然也会有其他的。对于查询请求量大的时候,大家知道一定有缓存,可以复用可重用的计算结果。可以看到,发一条微博,我有很多粉丝,他们都会来看我发的内容,所以 微博是最适合使用 缓 存 的系统,微博的读写比例基本在几十比一。微博使用了 双 层缓 存,上面是L1,每个L1上都是一组(包含4-6台机器),左边的框相当于一个机房,右边又是一个机房。在这个系统中L1缓存所起的作用是什么? 首先,L1 缓 存增加整个系 统 的 QPS, 其次 以低成本灵活扩容的方式 增加 系统 的 带宽 。想象一个极端场景,只有一篇博文,但是它的访问量无限增长,其实我们不需要影响L2缓存,因为它的内容存储的量小,但它就是访问量大。这种场景下,你就需要使用L1来扩容提升QPS和带宽瓶颈。另外一个场景,就是L2级缓存发生作用,比如我有一千万个用户,去访问的是一百万个用户的微博 ,这个时候,他不只是说你的吞吐量和访问带宽,就是你要缓存的博文的内容也很多了,这个时候你要考虑缓存的容量, 第二 级缓 存更多的是从容量上来 规划,保证请求以较小的比例 穿透到 后端的 数据 库 中 ,根据你的用户模型你可以估出来,到底有百分之多少的请求不能穿透到DB, 评估这个容量之后,才能更好的评估DB需要多少库,需要承担多大的访问的压力。另外,我们看双机房的话,左边一个,右边一个。 两个机房是互 为 主 备 , 或者互 为热备 。如果两个用户在不同地域,他们访问两个不同机房的时候,假设用户从IDC1过来,因为就近原理,他会访问L1,没有的话才会跑到Master,当在IDC1没找到的时候才会跑到IDC2来找。同时有用户从IDC2访问,也会有请求从L1和Master返回或者到IDC1去查找。 IDC1 和 IDC2 ,两个机房都有全量的用户数据,同时在线提供服务,但是缓存查询又遵循最近访问原理。还有哪些多级缓存的例子呢?CDN是典型的多级缓存。CDN在国内各个地区做了很多节点,比如在杭州市部署一个节点时,在机房里肯定不止一台机器,那么对于一个地区来说,只有几台服务器到源站回源,其他节点都到这几台服务器回源即可,这么看CDN至少也有两级。Local Cache+ 分布式 缓 存,这也是常见的一种策略。有一种场景,分布式缓存并不适用, 比如 单 点 资 源 的爆发性峰值流量,这个时候使用Local Cache + 分布式缓存,Local Cache 在 应用 服 务 器 上用很小的 内存资源 挡住少量的 极端峰值流量,长尾的流量仍然访问分布式缓存,这样的Hybrid缓存架构通过复用众多的应用服务器节点,降低了系统的整体成本。 我们来看一下 Feed 的存 储 架构,微博的博文主要存在MySQL中。首先来看内容表,这个比较简单,每条内容一个索引,每天建一张表,其次看索引表,一共建了两级索引。首先想象一下用户场景,大部分用户刷微博的时候,看的是他关注所有人的微博,然后按时间来排序。仔细分析发现在这个场景下, 跟一个用户的自己的相关性很小了。所以在一级索引的时候会先根据关注的用户,取他们的前条微博ID,然后聚合排序。我们在做哈希(分库分表)的时候,同时考虑了按照UID哈希和按照时间维度。很业务和时间相关性很高的,今天的热点新闻,明天就没热度了,数据的冷热非常明显,这种场景就需要按照时间维度做分表,首先冷热数据做了分离(可以对冷热数据采用不同的存储方案来降低成本),其次, 很容止控制我数据库表的爆炸。像微博如果只按照用户维度区分,那么这个用户所有数据都在一张表里,这张表就是无限增长的,时间长了查询会越来越慢。二级索引,是我们里面一个比较特殊的场景,就是我要快速找到这个人所要发布的某一时段的微博时,通过二级索引快速定位。 分布式服务追踪系统 分布式追踪服务系统,当系统到千万级以后的时候,越来越庞杂,所解决的问题更偏向稳定性,性能和监控。刚才说用户只要有一个请求过来,你可以依赖你的服务RPC1、RPC2,你会发现RPC2又依赖RPC3、RPC4。分布式服务的时候一个痛点,就是说一个请求从用户过来之后,在后台不同的机器之间不停的调用并返回。 当你发现一个问题的时候,这些日志落在不同的机器上,你也不知道问题到底出在哪儿,各个服务之间互相隔离,互相之间没有建立关联。所以导致排查问题基本没有任何手段,就是出了问题没法儿解决。 我们要解决的问题,我们刚才说日志互相隔离,我们就要把它建立联系。建立联系我们就有一个请求ID,然后结合RPC框架, 服务治理功能。假设请求从客户端过来,其中包含一个ID 101,到服务A时仍然带有ID 101,然后调用RPC1的时候也会标识这是101 ,所以需要 一个唯一的 请求 ID 标识 递归迭代的传递到每一个 相关 节点。第二个,你做的时候,你不能说每个地方都加,对业务系统来说需要一个框架来完成这个工作, 这 个框架要 对业务 系 统 是最低侵入原 则 , 用 JAVA 的 话 就可以用 AOP,要做到零侵入的原则,就是对所有相关的中间件打点,从接口层组件(HTTP Client、HTTP Server)至到服务层组件(RPC Client、RPC Server),还有数据访问中间件的,这样业务系统只需要少量的配置信息就可以实现全链路监控 。为什么要用日志?服务化以后,每个服务可以用不同的开发语言, 考虑多种开发语言的兼容性 , 内部定 义标 准化的日志 是唯一且有效的办法。最后,如何构建基于GPS导航的路况监控?我们刚才讲分布式服务追踪。分布式服务追踪能解决的问题, 如果 单一用 户发现问题 后 , 可以通 过请 求 ID 快速找到 发 生 问题 的 节 点在什么,但是并没有解决如何发现问题。我们看现实中比较容易理解的道路监控,每辆车有GPS定位,我想看北京哪儿拥堵的时候,怎么做? 第一个 , 你肯定要知道每个 车 在什么位置,它走到哪儿了。其实可以说每个车上只要有一个标识,加上每一次流动的信息,就可以看到每个车流的位置和方向。 其次如何做 监 控和 报 警,我们怎么能了解道路的流量状况和负载,并及时报警。我们要定义这条街道多宽多高,单位时间可以通行多少辆车,这就是道路的容量。有了道路容量,再有道路的实时流量,我们就可以基于实习路况做预警? 对应于 分布式系 统 的话如何构建? 第一 , 你要 定义 每个服 务节 点它的 SLA A 是多少 ?SLA可以从系统的CPU占用率、内存占用率、磁盘占用率、QPS请求数等来定义,相当于定义系统的容量。 第二个 , 统计 线 上 动态 的流量,你要知道服务的平均QPS、最低QPS和最大QPS,有了流量和容量,就可以对系统做全面的监控和报警。 刚才讲的是理论,实际情况肯定比这个复杂。微博在春节的时候做许多活动,必须保障系统稳定,理论上你只要定义容量和流量就可以。但实际远远不行,为什么?有技术的因素,有人为的因素,因为不同的开发定义的流量和容量指标有主观性,很难全局量化标准,所以真正流量来了以后,你预先评估的系统瓶颈往往不正确。实际中我们在春节前主要采取了三个措施:第一,最简单的就是有降 级 的 预 案,流量超过系统容量后,先把哪些功能砍掉,需要有明确的优先级 。第二个, 线上全链路压测,就是把现在的流量放大到我们平常流量的五倍甚至十倍(比如下线一半的服务器,缩容而不是扩容),看看系统瓶颈最先发生在哪里。我们之前有一些例子,推测系统数据库会先出现瓶颈,但是实测发现是前端的程序先遇到瓶颈。第三,搭建在线 Docker 集群 , 所有业务共享备用的 Docker集群资源,这样可以极大的避免每个业务都预留资源,但是实际上流量没有增长造成的浪费。 总结 接下来说的是如何不停的学习和提升,这里以Java语言为例,首先, 一定要 理解 JAVA;第二步,JAVA完了以后,一定要 理 解 JVM;其次,还要 理解 操作系统;再次还是要了解一下 Design Pattern,这将告诉你怎么把过去的经验抽象沉淀供将来借鉴;还要学习 TCP/IP、 分布式系 统、数据结构和算法。

hiekay 2019-12-02 01:39:25 0 浏览量 回答数 0

问题

异地多活设计有哪些常见的难点和技巧?

云栖技术 2019-12-01 21:47:21 2981 浏览量 回答数 0

回答

将每个请求封装到异步方法里头,详细可以了解一下@Async注解######你还应该告诉他,异步获取数据后再怎么把各个结果数据整合后返回给http客户端。###### FutureTask 了解一下######如果是java8还有更强大的CompletableFuture###### 正好这两天做了相关的东西,我的解决方案是通过多线程异步执行,主线程阻塞,子线程全部运行完毕后再汇总数据 ,主线程继续执行~~~~~~~~~JDK7就有类似的框架,不过我是自己实现的######求具体逻辑,多谢大婶~~~不太理解具体处理逻辑######说的直接一点就是用线程池执行###### CompletableFuture ###### 一个接口获取大量的不同的数据,这个在速度响应上肯定有问题。如果是相同的大量的数据,服务层可以通过多线程去处理解决;如果是不同的数据,只能在业务功能上进行拆分,如果不能拆分,那就前端通过多次请求异步加载

爱吃鱼的程序员 2020-06-05 13:10:50 0 浏览量 回答数 0

回答

记录一下~  结果是shiro的原因  发现去掉ShiroConfig 就正常了 ,原因是在ShiroRealm中注入了service 导致service 方法的事务都失效了,发现shiro官方demo注入的dao  修改成注入dao就可以了~######怎么判断不行?? 第二个问题,spring的事务本来和拦截器就是统一原理呀,aop######谢谢回答 我在数据库设置了字段长度 超长就应该回滚 第一个会回滚 第二个不会###### 你事务配置有问题吧······boot 配置事务很简单的····###### 我也碰到这个问题了,排查了两天,单元测试加上了@Transactional可以,加到Controller层也可以,明明service层已经增加了事务注解就是不可以,一点点调试,声明我是spring boot,在shiroConfig中配置了从数据库加载权限url,动态配置shiroFilter, 在shiroConfig类中引入PermissionSerice为空,后来我就放到shiroFilter的方法上,可以引入,但是导致了这个service的事务丢失了。目前还没有找到解决方法。

montos 2020-05-31 13:14:28 0 浏览量 回答数 0

回答

记录一下~  结果是shiro的原因  发现去掉ShiroConfig 就正常了 ,原因是在ShiroRealm中注入了service 导致service 方法的事务都失效了,发现shiro官方demo注入的dao  修改成注入dao就可以了~######怎么判断不行?? 第二个问题,spring的事务本来和拦截器就是统一原理呀,aop######谢谢回答 我在数据库设置了字段长度 超长就应该回滚 第一个会回滚 第二个不会###### 你事务配置有问题吧······boot 配置事务很简单的····###### 我也碰到这个问题了,排查了两天,单元测试加上了@Transactional可以,加到Controller层也可以,明明service层已经增加了事务注解就是不可以,一点点调试,声明我是spring boot,在shiroConfig中配置了从数据库加载权限url,动态配置shiroFilter, 在shiroConfig类中引入PermissionSerice为空,后来我就放到shiroFilter的方法上,可以引入,但是导致了这个service的事务丢失了。目前还没有找到解决方法。

kun坤 2020-06-07 08:10:16 0 浏览量 回答数 0

回答

InnoDB:Fatalerror:cannotallocatememoryfor thebufferpool 楼主看不懂英文?不会用搜索引擎?回复 @leo108: @leo108而且我不是没有百度啊,问题是众说纷纭啊……如果你觉得我的态度有问题,我可以反思我表达的方式。我真的一点mysql的挑错经验都没有。而且确实是正在百度。 @leo108而且你的语气是怎么回事? @leo108问题是我一点解决经验都没有,我在问你细节。给层主回血 只要删除MySQL目录下的ib_logfile0和ib_logfile1两个文件,就可以解决问题了。回复 @Tuesday:请问该如何解决呢?这可能成坑,注意innodb引擎.我觉得导出数据,重做一下mysql比较安全.这个……重做过……没有解决 http://www.oschina.net/question/2962_115815 我觉得问问题之前一定要先做做功课,OSC搜一下就发现有人问过一样的问题真心没搜到这个…… 会不会是 innodb_buffer_pool_size设置的太高了,超过了你的机器内存,请尝试降低该内存配置。 使用innodb最好还是根据机器修改默认配置哦。之前没有设置过这个属性 引用来自“玻璃渣”的评论 会不会是 innodb_buffer_pool_size设置的太高了,超过了你的机器内存,请尝试降低该内存配置。 使用innodb最好还是根据机器修改默认配置哦。之前没有修改过

爱吃鱼的程序员 2020-06-15 19:43:37 0 浏览量 回答数 0

回答

记录一下~  结果是shiro的原因  发现去掉ShiroConfig 就正常了 ,原因是在ShiroRealm中注入了service 导致service 方法的事务都失效了,发现shiro官方demo注入的dao  修改成注入dao就可以了~######怎么判断不行?? 第二个问题,spring的事务本来和拦截器就是统一原理呀,aop######谢谢回答 我在数据库设置了字段长度 超长就应该回滚 第一个会回滚 第二个不会###### 你事务配置有问题吧······boot 配置事务很简单的····###### 我也碰到这个问题了,排查了两天,单元测试加上了@Transactional可以,加到Controller层也可以,明明service层已经增加了事务注解就是不可以,一点点调试,声明我是spring boot,在shiroConfig中配置了从数据库加载权限url,动态配置shiroFilter, 在shiroConfig类中引入PermissionSerice为空,后来我就放到shiroFilter的方法上,可以引入,但是导致了这个service的事务丢失了。目前还没有找到解决方法。 ![image.png](https://ucc.alicdn.com/pic/developer-ecology/d80346b5d14e433f9280ac1958cf3175.png)

montos 2020-05-30 22:49:40 0 浏览量 回答数 0

问题

爬虫数据管理【问答合集】

马铭芳 2019-12-01 20:19:58 63181 浏览量 回答数 22

回答

"     建议仔细看一下 jfinal 手册,一共才30 多页,而且大部分是代码示例。楼主碰到的问题在jfinal 手册第25页有如下说明: <img src=""http://static.oschina.net/uploads/space/2014/0113/181020_reqX_201137.png"" alt="""" /> ######<div class=""ref""> 引用来自“JFinal”的答案     建议仔细看一下 jfinal 手册,一共才30 多页,而且大部分是代码示例。楼主碰到的问题在jfinal 手册第25页有如下说明: 我还有个三个问题,还望赐教 问题1 :即使我把上面保存方法换成new Model.Set(...),在最后抛出错误 ,数据库依然能够保存成功。 @Before(Tx.class) public void doSomeThine(){ Test t=new Test(); t.set("id",1111); t.set("name","zhoumaomao"); t.save(); Test2 t=new Test2(); t2.set("id",33333); t2.set("name","zmm"); t2.save(); throw new sqlException("出错啦..."); } 问题二:如果我改用db.tx(obj instance IAtom) 就能够原子执行,我看您的源码都是从线程中获取conn 。不知为何 问题三:我看您的@Before(Tx.class)都写在Action 层,那这样 假设我手动抛出异常,在Action层如果手动捕捉,那Tx 就捕捉不到,如果再往上抛出,那则遇到“系统错误”请问这种情况该怎么处理? ###### 引用来自“zhoumaomao”的答案 引用来自“JFinal”的答案     建议仔细看一下 jfinal 手册,一共才30 多页,而且大部分是代码示例。楼主碰到的问题在jfinal 手册第25页有如下说明: 我还有个三个问题,还望赐教 问题1 :即使我把上面保存方法换成new Model.Set(...),在最后抛出错误 ,数据库依然能够保存成功。 @Before(Tx.class) public void doSomeThine(){ Test t=new Test(); t.set("id",1111); t.set("name","zhoumaomao"); t.save(); Test2 t=new Test2(); t2.set("id",33333); t2.set("name","zmm"); t2.save(); throw new sqlException("出错啦..."); } 问题二:如果我改用db.tx(obj instance IAtom) 就能够原子执行,我看您的源码都是从线程中获取conn 。不知为何 问题三:我看您的@Before(Tx.class)都写在Action 层,那这样 假设我手动抛出异常,在Action层如果手动捕捉,那Tx 就捕捉不到,如果再往上抛出,那则遇到“系统错误”请问这种情况该怎么处理? try { conn = DbKit.getConnection(); autoCommit = conn.getAutoCommit(); DbKit.setThreadLocalConnection(conn); conn.setTransactionIsolation(getTransactionLevel()); // conn.setTransactionIsolation(transactionLevel); conn.setAutoCommit(false); invocation.invoke(); conn.commit(); } catch (Exception e) { if (conn != null) try {conn.rollback();} catch (Exception e1) {e1.printStackTrace();} throw new ActiveRecordException(e); } 的确,事务的回滚在拦截器那边,如果action层捕获异常,则事务无法回滚了..在该怎么解决? ###### 引用来自“huson”的答案 引用来自“zhoumaomao”的答案 引用来自“JFinal”的答案     建议仔细看一下 jfinal 手册,一共才30 多页,而且大部分是代码示例。楼主碰到的问题在jfinal 手册第25页有如下说明: 我还有个三个问题,还望赐教 问题1 :即使我把上面保存方法换成new Model.Set(...),在最后抛出错误 ,数据库依然能够保存成功。 @Before(Tx.class) public void doSomeThine(){ Test t=new Test(); t.set("id",1111); t.set("name","zhoumaomao"); t.save(); Test2 t=new Test2(); t2.set("id",33333); t2.set("name","zmm"); t2.save(); throw new sqlException("出错啦..."); } 问题二:如果我改用db.tx(obj instance IAtom) 就能够原子执行,我看您的源码都是从线程中获取conn 。不知为何 问题三:我看您的@Before(Tx.class)都写在Action 层,那这样 假设我手动抛出异常,在Action层如果手动捕捉,那Tx 就捕捉不到,如果再往上抛出,那则遇到“系统错误”请问这种情况该怎么处理? try { conn = DbKit.getConnection(); autoCommit = conn.getAutoCommit(); DbKit.setThreadLocalConnection(conn); conn.setTransactionIsolation(getTransactionLevel()); // conn.setTransactionIsolation(transactionLevel); conn.setAutoCommit(false); invocation.invoke(); conn.commit(); } catch (Exception e) { if (conn != null) try {conn.rollback();} catch (Exception e1) {e1.printStackTrace();} throw new ActiveRecordException(e); } 的确,事务的回滚在拦截器那边,如果action层捕获异常,则事务无法回滚了..在该怎么解决?      对于 web 项目来说通常让异常抛出,跳到 500 页面即可,如果还干预更多,可以 Tx 拦截器前面再设置个拦截器在更外层捕获到异常再做后续处理。之所以是异常理应很少出现,意外出现跳去 error 500 并做了日志,已经比较合理     另外还可以使用boolean result = Db.tx(...) 方法来得到事务是否成功的结果,也可以在外层捕获异常再继续做处理 ###### 引用来自“zhoumaomao”的答案 引用来自“JFinal”的答案     建议仔细看一下 jfinal 手册,一共才30 多页,而且大部分是代码示例。楼主碰到的问题在jfinal 手册第25页有如下说明: 我还有个三个问题,还望赐教 问题1 :即使我把上面保存方法换成new Model.Set(...),在最后抛出错误 ,数据库依然能够保存成功。 @Before(Tx.class) public void doSomeThine(){ Test t=new Test(); t.set("id",1111); t.set("name","zhoumaomao"); t.save(); Test2 t=new Test2(); t2.set("id",33333); t2.set("name","zmm"); t2.save(); throw new sqlException("出错啦..."); } 问题二:如果我改用db.tx(obj instance IAtom) 就能够原子执行,我看您的源码都是从线程中获取conn 。不知为何 问题三:我看您的@Before(Tx.class)都写在Action 层,那这样 假设我手动抛出异常,在Action层如果手动捕捉,那Tx 就捕捉不到,如果再往上抛出,那则遇到“系统错误”请问这种情况该怎么处理?     问题一:Tx 拦截器只要捕获到异常就一定会回滚事务,检查一下数据库引是否为 innodb(对于mysql来说),myisam不支持事务     问题二:从 ThreadLocal 中获取 conn 是为了实现事务控制,当ThreadLocal中能取到conn,证明是在事务之中,证明本线之前有数据库操作并获取过 conn,那么本线程当前的数据库操作就不必再从 DataSource中获取 conn,使用本线程已有 conn , 好让多次数据库操作使用同一个conn,从而可以实现统一 commit()     问题三:在 Tx 拦截器再放置一个拦截器再次捕获 Tx 的往上抛出的异常。也可以用一个独立的拦截器使用 Db.tx(...) 来包裹 ai.invoke(),实现事务,并在 Db.tx(...)捕获异常 ######不知道楼主用的是那个版本,在Tx.class里面有个NestedTransactionHelpException,可以在自己的异常处理中中catch抛出这个异常,这样可以自己处理异常并可以回滚数据。 ###### 引用来自“zeroman1212”的评论不知道楼主用的是那个版本,在Tx.class里面有个NestedTransactionHelpException,可以在自己的异常处理中中catch抛出这个异常,这样可以自己处理异常并可以回滚数据。 真的吗?我用的是1.8,感觉不行呀

kun坤 2020-05-26 13:14:53 0 浏览量 回答数 0

回答

业界现在流行的两个中台是业务中台和数据中台。数据中台它的逻辑就是说自己所在的一个企业,本身的应用可能非常复杂,有不同的App、有不同的用户,那我怎么解决数据孤岛和数据会被打散这个问题?比如说,阿里巴巴里面有不同的用户账号,像淘宝的账号、天猫的账号等等。我们如何通过一个中台把同一个用户在不同平台上的信息能够打通,这样我们能够更好地服务于我们的用户。那么这是一个非常简单的数据中台的概念。在阿里,我们做出来一个所谓的One ID,来支持用户在不同的平台上,它沉淀出来的不同的数据、不同的业务逻辑,它可以通过一个统一的数据处理的中台来进行分析、推荐、可视化等。这是数据中台的一个概念。 那数据中台和数据库是什么关系?数据库是数据中台下面一层的底座。大家可以这样理解:如果要做跨平台和跨应用支撑一个数据中台来处理和分析这些数据,在底部一定要有一个数据库系统。这个数据系统有两个重要的使命:第一个支持上面数据中台做各种各样的在线业务逻辑的处理,像数据可能有更新,可能需要事务的方式去更新数据和实时写入数据;另一个需要采用一个像今天课程中提到的OLAP在线数仓来做这种实时的交互式分析,来支持数据中台做复杂的数据分析。另外还有可能需要像数据湖这种产品和技术去支持数据中台去访问多元异构的数据。 再抽象一点,数据库系统实际上跟业务逻辑是没有关系的。因为它抽象到数据库里面就是读和写以及计算处理。但数据中台是有可能和业务逻辑是有紧密关系的,比如说One ID和用户ID肯定是和业务逻辑有很强的关系,这是从另外一个角度来看。

问问小秘 2020-05-22 11:52:46 0 浏览量 回答数 0

问题

Vue面试题汇总【精品问答】

问问小秘 2020-05-25 18:02:28 7911 浏览量 回答数 2

问题

Apache Flink常见问题汇总【精品问答】

黄一刀 2020-05-19 17:51:47 8154 浏览量 回答数 2

问题

MaxCompute百问集锦(持续更新20171011)

隐林 2019-12-01 20:19:23 38430 浏览量 回答数 18

问题

怎么保障iSCSI存储连接?

elainebo 2019-12-01 21:04:12 7482 浏览量 回答数 0

回答

我也遇到此问题,只有验证过的才有权限看到,后台没有报错,但是我的页面是有的总是报404,我直接在浏览器输入被限制的URL都可以进入了,就是跳转不成功,请问你是怎么解决的######我在http://www.2cto.com/kf/201208/147950.html找到了答案,不知你是怎么解决的######我的解决方法是:验证成功后, return "redirect:/maps/main";(重定向你想跳转的页面),而 return "maps/main";仍然不能被找到###### 我的问题都已经解决了 ###### 给大家一个Shrio项目的完整Demo:http://www.sojson.com/shiro 一个基于Spring4.25 + Mybatis + Redis 的Demo 本教程包含的内容。 SSM(SpringMVC + Spring +Mybatis)框架的增删改查(含分页),所以如果框架小白也是可以看看的。 View层主要是Freemarker,但是为了考虑到好多人还使用的是JSP,也有一个页面是用JSP实现的,并且框架支持Freemarker 和JSP双View展示(优先找Freemarker)。 Shiro + Redis 的集成,也提供Ehcache的依赖Jar。 Shiro初始权限动态加载。 Shiro自定义权限校验Filter定义,及功能实现。 ShiroAjax请求权限不满足,拦截后解决方案。 ShiroFreemarker标签使用。 ShiroJSP标签使用。 Shiro登录后跳转到最后一个访问的页面。 用户禁止登录Demo。 在线显示,在线用户管理(踢出登录)。 登录注册密码加密传输Demo(详细请见下面讲解)。 密码修改。 用户个人中心。 权限的增删改查。 角色的增删改查。 权限->角色->用户之间的关系维护。 管理员权限的自动添加(当有一个权限创建,自动添加到管理员角色下,保证管理员是最大权限)。 Spring定时任务数据化数据。 集成多种验证码(包括动态的gif验证码哦)。 后续会陆陆续续升级... ... 11

kun坤 2020-06-20 13:21:20 0 浏览量 回答数 0

回答

我也遇到此问题,只有验证过的才有权限看到,后台没有报错,但是我的页面是有的总是报404,我直接在浏览器输入被限制的URL都可以进入了,就是跳转不成功,请问你是怎么解决的######我在http://www.2cto.com/kf/201208/147950.html找到了答案,不知你是怎么解决的######我的解决方法是:验证成功后, return "redirect:/maps/main";(重定向你想跳转的页面),而 return "maps/main";仍然不能被找到###### 我的问题都已经解决了 ###### 给大家一个Shrio项目的完整Demo:http://www.sojson.com/shiro 一个基于Spring4.25 + Mybatis + Redis 的Demo 本教程包含的内容。 SSM(SpringMVC + Spring +Mybatis)框架的增删改查(含分页),所以如果框架小白也是可以看看的。 View层主要是Freemarker,但是为了考虑到好多人还使用的是JSP,也有一个页面是用JSP实现的,并且框架支持Freemarker 和JSP双View展示(优先找Freemarker)。 Shiro + Redis 的集成,也提供Ehcache的依赖Jar。 Shiro初始权限动态加载。 Shiro自定义权限校验Filter定义,及功能实现。 ShiroAjax请求权限不满足,拦截后解决方案。 ShiroFreemarker标签使用。 ShiroJSP标签使用。 Shiro登录后跳转到最后一个访问的页面。 用户禁止登录Demo。 在线显示,在线用户管理(踢出登录)。 登录注册密码加密传输Demo(详细请见下面讲解)。 密码修改。 用户个人中心。 权限的增删改查。 角色的增删改查。 权限->角色->用户之间的关系维护。 管理员权限的自动添加(当有一个权限创建,自动添加到管理员角色下,保证管理员是最大权限)。 Spring定时任务数据化数据。 集成多种验证码(包括动态的gif验证码哦)。 后续会陆陆续续升级... ... 11

kun坤 2020-05-30 23:25:26 0 浏览量 回答数 0

问题

大数据时代——数据存储技术百问

yq传送门 2019-12-01 20:27:42 31965 浏览量 回答数 35

问题

HBase 优化实战

pandacats 2019-12-20 21:12:25 0 浏览量 回答数 0

回答

php 使用socket告知Python,可以在socket上声明是及时推送还是延迟推送######哦?愿闻其详 那要是很多用户同时并发呢######system 调用外部程序是一种办法######@民工MG php里能用system函数?######回复 @隐形人 : system('commond');######PHP里怎么调用呢######回复 @隐形人 : 并发可以采用tornado这个框架(里面有个tcpserver模块),另外还有很多开源服务器框架,你可以网上搜搜,另外,受制于gil,Python无法利用多核,如果这些框架是单进程的,你要使用多核的话,多开几个进程(进程可以解决只能利用单核的问题)。当然,你可以自己实现socket服务器,一般多并发的可以多线程,或者可以多进程(这点我没搞过,而且貌似只有linux支持),当然也可以考虑单线程,使用非阻塞,异步io。方案很多######搞个python socket服务器,把数据发送到socket server,让socket server处理######回复 @MeiKai : 那现在的问题是 怎么把PHP接收到的数据传递给python呢######回复 @隐形人 : 可以是可以,但这样就需要python web框架来接收表单数据,你把php作为前端了,现在又把python作为前端了,比较乱,建议用php接收action数据,然后传给python,否则又要部署python web开发环境了######网页表单里的action里能把数据提交给python程序嘛######python监听个Socket,接受到请求就执行相应Python程序,PHP层只需要向这个Socket发送数据即可,至于你说的定时,可以用Python写个定时执行脚本即可######回复 @民工MG : Socket 仅作为任务接收,担心个P,像@netstu所的,直接将任务抛到队列,让守护脚本去执行,这担心那担心算了别做了######回复 @隐形人 : 你有多少?######如果有很多用户同时向这个socket发送数据呢######消息队列,service ,rpc, 等都可以,不要直接通讯######额 这个有点深了######我不知道啊 项目还没上线呢 我们直接用exec调用python了######建议使用对列来解决。######愿闻其详######这个问题我也问过。回答是用socket 不知道能不能直接用go语言或者js做后端处理并发

爱吃鱼的程序员 2020-06-05 14:29:37 0 浏览量 回答数 0

回答

每5秒钟内就有1万条数据插入,该不会是一个长事务吧? 还是每次写一条就提交呢? ######@苗威 : 嗯嗯,我这次也就是准备用这个方法解决,谢谢你啦,嘿嘿######@李密 : 一次写一批,与一般的处理方法不一样,可以纵向分表,分库######@李密 : 1万左右的数据,就不用存硬盘了,用内存,java缓存组件也行,memcached也行,Mysql Memory引擎 也行,使用过的删掉,新的添上去。######@李密 : 这个就算作是一种“分区表”的应用啦。对每个运营商指定对应的表,然后在应用层做映射。 1W/5sec的插入加上高并发读取算不小的负荷,不知道使用pgsql(配合分区表)是否能解决性能问题。######@李密 : 能解决问题的方法就是好方法###### 这张表因为要和游戏通信,包含很多必须的字段,字段总数有16个,目前服务器200台,以后估计至少500台,那时候插入和查询数量就更恐怖了,所以我越来越担心以后这个项目问题会卡在这个表上 (昨天(22:10) by 李密) 可以通过把字段分表方式避免单表过大。不过以你远期规模使用现在这种数据库结构肯定会崩溃。如果可行(楼主有权设计修改表结构),建议楼主考虑重新设计数据库表甚至更换数据库(有钱换oracle,免费换pgsql)。 另外,并发读写巨大,磁盘性能很重要,要么用SCSI/SAS阵列要么直接上SSD(但SSD的寿命也许需要考虑)。   已经运营两个月了,表内目前数据1000多万。 一年就6千万,如果不做分区表(以时间划分)那么迟早崩溃 java项目+mysql都在这一台服务器上 楼上还有朋友说读写分离,现在连数据库都不是独立服务器,估计再跑几个月就会葛屁的   关于pgsql和mysql比较的一些帖子 http://www.oschina.net/question/126398_23854 http://www.oschina.net/question/96003_13994 http://www.oschina.net/question/129318_19029    ###### redis和Mysql Memory引擎 都行,10W条数据没问题###### @苗威 : 嗯嗯,谢谢你这么耐心帮我,嘿嘿,以后多向你请教###### @李密: 客气,我也只有些理论基础,分表可以水平分,和垂直分,水平分是各个运营商分,垂直分是把所有的邀请码分成若干张表,比如用最后一个字符分,邀请码如果是字符串最好能换成int存,压缩会加快很多查找速度######抽空我研究下,目前想临时采用分表把这个问题解决下,给每个运营商动态分配一个礼品表,运营商两年内也不会超过200个,表的数量也不会有太多,先分表。威哥,你觉得这样设计有重大缺陷不?因为之前我还没这样做过######是 innodb 还是 myisam 呢 ######薯哥哥,是innodb表######锁表应该是在innodB下发生的吧..myisam直接坏表了 ######是innodb######这种情况充分说明内存缓存设计的重要性 ######天啊..大并发居然用innodB..   我测试过innodB的写入性能是非常低的,cpu效率不高..插入爆慢.. 建议读写分离..写可以innodB,读还是myisam吧..###### @gamespoerleveling : 没用的,读库同样存在数据更新问题。在从innodb写库同步到myisam读库时如果读库正好是访问高峰,那么就会遇到楼主现在同样的锁表情况。 总而言之,在大数据量大并发下mysql就是个坑爹的杯具~###### @mark35 : 我是说的读写分离...读myisam的表###### @hulei : 坏不坏表不好说, 但表锁的代价肯定比行锁高!######myisam是表锁啊,这种程度的数据输入myisam必坏表啊。######在myisam上大并发读写将会更悲摧的~###### 引用来自“红薯”的答案 每5秒钟内就有1万条数据插入,该不会是一个长事务吧? 还是每次写一条就提交呢? 每次写一条就提交,但特别频繁,我之前ORACLE也碰到过这种情况。 ######那paulwong最后是怎么解决呢?可以分享下吗?######所有clinet直连 mysql server ?应该有数据库中间层吧###### 这样的业务逻辑就感觉有问题,以前在唯晶的时候,也做过类似的 为什么要每分钟过来1w,3w的记录?直接生成个百万条记录分给他们去用就行了, 就只有检索和更新了###### @陈俊贤 : 楼主这种应用采用读写分离意义不大并且还可能产生问题:通常情况下查询都会是有效查询,查询到记录就会产生关联写(改写激活码使用状态)。读写分离后数据肯定不是实时同步,那么当记录修改后(激活码已使用)在同步到读库这段时间中读库的该条记录查询结果都是老状态(激活码未使用),事务就不能保证一致了!###### @mark35 : 读写分离只是执行缓刑,不改这个逻辑,死刑是早晚的事###### @陈俊贤 : 读写分离不能根本解决问题的。或者说大家觉得读写分离是银弹那多半是因为mysql本来实在低能,用上读写分离就有效提高性能。但实际上即使使用读写分离也同样存在节点更新问题(写库同步到读库)。###### @李密 : 那就读写分离,照你说的话以后多半会崩掉###### @mark35 : 目前卡的类别已经达到500种以上,所以以后生成量更恐怖了。。。

黄二刀 2020-05-27 20:08:00 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 云栖号物联网 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 云栖号弹性计算 阿里云云栖号 云栖号案例 云栖号直播