搜索关注微信公众号"捉虫大师",后端技术分享,架构设计.性能优化.源码阅读.问题排查.踩坑实践. 本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star. Cobar 虽然是一款"古老"的数据库中间件,但目前不少公司仍然在用它,且它包含了不少有意思的算法和实现,今天就来分享 Cobar 提出的一种在分库场景下对 Order By / Limit 的优化. 原算法描述参考: https://github.com/alib…
最近帮领导做了几页ppt,总结几种场景下ironic管理物理机网络的网络拓扑,简单做成一份文章记录下.只是方便自己记忆,没有认真修改.如果对ironic有一定了解,可以看下,加深理解. 1. vlan模式+物理机 Ironic Ocata之后支持,neutron接交换机管理物理机网络的场景.在这种模式下,通过nova创建裸机时,neutron可以配置交换机,将物理机的接口vlan切入到用户指定的vlan中,达到在不同租户间网络隔离的效果. OpenStack管理网要和IPMI网络,部署网络,交换…
概述 一谈到高并发的优化方案,往往能想到模块水平拆分.数据库读写分离.分库分表,加缓存.加mq等,这些都是从系统架构上解决.单模块作为系统的组成单元,其性能好坏也能很大的影响整体性能,本文从单模块下读多写少的场景出发,探讨其解决方案,以其更好的实现高并发.不同的业务场景,读和写的频率各有侧重,有两种常见的业务场景: 读多写少:典型场景如广告检索端.白名单更新维护.loadbalancer 读少写多:典型场景如qps统计 本文针对读多写少(也称一写多读)场景下遇到的问题进行分析,并探讨一种合适的解…
作者 | 张晓宇(衷源)  阿里云容器平台技术专家 关注『阿里巴巴云原生』公众号,回复关键词"1010",可获取本文 PPT. 导读:资源利用率一直是很多平台管理和研发人员关心的话题.本文作者通过阿里巴巴容器平台团队在这一领域的工作实践,整理出了一套资源利用提升的方案,希望能够带给大家带来一些讨论和思考. 引言 不知道大家有没有过这样的经历:当我们拥有了一套 Kubernetes 集群,然后开始部署应用的时候,我们应该给容器分配多少资源呢? 这很难说.由于 Kubernetes 自己的…
Redis的一个非常大优点就是能够不用整个转入到这个数据库,而是能够沿用之前的MySQL等数据库,而仅在一些特定的应用场景通过Redis的特性提高效率.本文列出了11个这种Web应用场景,如显示最新的项目列表.删除和过滤.排行榜等相关需求. [51CTO精选译文]在"怎样让Redis在你的系统中发挥作用"一文中,Salvatore 'antirez' Sanfilippo告诉我们怎样利用Redis独有的数据结构处理能力来解决一些常见问题.一些Redis原语命令比方LPUSH.LTRIM…
在"怎样让redis在你的系统中发挥作用"一文中,salvatore 'antirez' sanfilippo告诉我们如何利用redis独有的数据结构处理能力来解决一些常见问题.一些redis原语命令比如lpush.ltrim和lrem等等能够用来帮助开发者完成需要的任务--这些任务在传统的数据库存储中非常困难或缓慢.这是一篇非常有用并且实际的文章.那么要如何在你的框架中完成这些任务呢? 下面列出11种web应用场景,在这些场景下可以充分的利用redis的特性,大大提高效率. 1.在主…
下面列出11种Web应用场景,在这些场景下可以充分的利用Redis的特性,大大提高效率. 1.在主页中显示最新的项目列表. Redis使用的是常驻内存的缓存,速度非常快.LPUSH用来插入一个内容ID,作为关键字存储在列表头部.LTRIM用来限制列表中的项目数最多为5000.如果用户需要的检索的数据量超越这个缓存容量,这时才需要把请求发送到数据库. 2.删除和过滤. 如果一篇文章被删除,可以使用LREM从缓存中彻底清除掉. 3.排行榜及相关问题. 排行榜(leader board)按照得分进行排…
下面列出11种Web应用场景,在这些场景下可以充分的利用Redis的特性,大大提高效率. 1.在主页中显示最新的项目列表. Redis使用的是常驻内存的缓存,速度非常快.LPUSH用来插入一个内容ID,作为关键字存储在列表头部.LTRIM用来限制列表中的项目数最多为5000.如果用户需要的检索的数据量超越这个缓存容量,这时才需要把请求发送到数据库. 2.删除和过滤. 如果一篇文章被删除,可以使用LREM从缓存中彻底清除掉. 3.排行榜及相关问题. 排行榜(leader board)按照得分进行排…
下面,我们就来看看在SaaS应用搭建过程中,可以采用什么样的多租户模型.从而能较为清晰地了解未来使用PaaS平台开发的SaaS,可以为用户提供哪些多租户的服务.        Gartner提出了7种多租户的部署和实现方式模型,该模型可以作为任何多租户环境的参考模型.在具体的实施中以及大型企业中,可以根据自身的需要来决定采用Gartner提出的何种多租户模型,或者几种多租户模型可以并存在一个云环境中.        我们首先来看一下Gartner提出的这7种模型,然后再根据本次项目的实际情况,提…
在虚拟化及云计算技术大规模应用于企业数据中心的科技潮流中,存储性能无疑是企业核心应用是否虚拟化.云化的关键指标之一.传统的做法是升级存储设备,但这没解决根本问题,性能和容量不能兼顾,并且解决不好设备利旧问题.因此,企业迫切需要一种大规模分布式存储管理软件,能充分利用已有硬件资源,在可控成本范围内提供最佳的存储性能,并能根据业务需求变化,从容量和性能两方面同时快速横向扩展.这就是Server SAN兴起的现实基础. Ceph作为Server SAN的最典型代表,可对外提供块.对象.文件服务的分布式…
办公室今天停电,幸好本本还有电,同事们好多都去打麻将去了,话说麻将这东西玩起来也还是有味的,不过我感觉我是输了不舒服,赢了替输的人不舒服,所以干脆拜别麻坛四五年了,在办公室一个人整理下好久前的一片论文的思想,和万千世界里有缘人共同分享下资源了. 论文的名字是<Adaptive Logarithmic Mapping For Displaying High Contrast Scenes>,相关的PDF文档可以在百度上下载到,翻译成中文的意思是一种显示高对比度场景的自适应对数映射算法,也是一篇很…
美团作为中国最大的在线本地生活服务平台,覆盖了餐饮.酒店.旅行.休闲娱乐.外卖配送等方方面面生活场景,连接了数亿用户和数百万商户.如何帮助本地商户开展在线营销,使得他们能快速有效地触达目标用户群体提升经营效率,是美团的核心问题之一,而机器学习相关技术在本地在线营销场景下发挥着非常关键作用. 本文将从5个方面来介绍.首先,介绍O2O场景下广告业务的特点,及其与B2B和B2C广告业务的差别:其次,从商户效果感知.用户体验和媒体平台收益三个维度,介绍O2O广告业务的最重要的考量指标:第三,从前两节阐述…
背景 主键(Primary Key),用于唯一标识表中的每一条数据.所以,一个合格的主键的最基本要求应该是唯一性. 那怎么保证唯一呢?相信绝大部分开发者在刚入行的时候选择的都是数据库的自增id,因为这是一种非常简单的方式,数据库里配置下就行了.但自增主键优缺点都很明显. 优点如下: 无需编码,数据库自动生成,速度快,按序存放. 数字格式,占用空间小. 缺点如下: 有数量限制.存在用完的风险. 导入旧数据时,可能会存在id重复,或id被重置的问题. 分库分表场景处理过于麻烦. GUID GUID,…
在分布式系统中,有一些场景需要使用全局唯一 ID ,可以和业务场景有关,比如支付流水号,也可以和业务场景无关,比如分库分表后需要有一个全局唯一 ID,或者用作事务版本号.分布式链路追踪等等,好的全局唯一 ID 需要具备这些特点: 全局唯一:这是最基本的要求,不能重复: 递增:有些特殊场景是必须递增的,比如事务版本号,后面生成的 ID 一定要大于前面的 ID :有些场景递增比不递增要好,因为递增有利于数据库索引的性能: 高可用:如果是生成唯一 ID 的系统或服务,那么一定会有大量的调用,那么保证其…
最近有位博友提出了一种应用场景,根据工作中实际遇到的类似的产品应用场景,记录下自己的解决方案. 场景: 需要在云端控制和采集各个站点的PLC数据.各个站点是分散的,每个站点有公网访问能力,但是分散站点的PLC没有固定IP,部分站点PLC设备不止一台. 方案一: 在这种场景下,其实最优和高效的解决方案是,使用物联网网关+MQTT的方式最可靠.这种方案比较简单,在每个站点的PLC上层加上物联网网关,网关与PLC设备进行数据通信.物联网网关一般支持多种数据协议,包括像Modbus等工控协议. 所以使用…
C++高并发场景下读多写少的解决方案 概述 一谈到高并发的解决方案,往往能想到模块水平拆分.数据库读写分离.分库分表,加缓存.加mq等,这些都是从系统架构上解决.单模块作为系统的组成单元,其性能好坏也能很大的影响整体性能,本文从单模块下读多写少的场景出发,探讨其解决方案,以其更好的实现高并发. 不同的业务场景,读和写的频率各有侧重,有两种常见的业务场景: 读多写少:典型场景如广告检索端.白名单更新维护.loadbalancer 读少写多:典型场景如qps统计 本文针对读多写少(也称一写多读)场景…
在知乎回答了下,顺手转回来. Enity Framework已经是.NET下最主要的ORM了.而ORM从一个Mapping的概念开始,到现在已经得到了一定的升华,特别是EF等对ORM框架面向对象能力的升华.切实地说,就是ORM让数据库在整个应用过程中更好地被封装和抽象化. ORM一开始只是Mapping,最基础的就是表与类的对应.Column和属性的对应,这只是最基础的.在这个层次上,数据库对象通过Mapping在面向对象语言层面,也就是业务层面被封装成了业务对象,然后允许以操作业务对象的方式对…
Entity Framework:如果允许模型处于非法状态,在某些场景下,记得清空DbContext 背景 之前写过两篇文章介绍模型的合法性: DDD:关于模型的合法性,Entity.IsValid()合理吗? .NET:关于数据模型.领域模型和视图模型的一些思考 今天讨论的问题其实是关于“主键映射”的,只是其中还涉及一种决策:“允许模型处于非常状态”. 测试代码 1 public static void Do() 2 { 3 Database.SetInitializer<MyDbContex…
又一周过去了,最近我们的工程师正在搞一个"大事情" --「[flow.ci](http://flow.ci/?utm_source=bokeyuan&utm_medium=passage&utm_content=ciweekly170110) 配置文件」,稍微剧透一下,这个功能预计会在春节前上线.详情请大家关注 [flow.ci Changelog](http://changelog.flow.ci/) 或其他官方通知:) 本期 CI Weekly 收录了的CI/CD实…
浅谈Vue不同场景下组件间的数据“交流”   Vue的官方文档可以说是很详细了.在我看来,它和react等其他框架文档一样,讲述的方式的更多的是“方法论”,而不是“场景论”,这也就导致了:我们在阅读完文档许多遍后,写起代码还是不免感到有许多困惑,因为我们不知道其中一些知识点的运用场景.这就是我写这篇文章的目的,探讨不同场景下组件间的数据“交流”的Vue实现   父子组件间的数据交流 父子组件间的数据交流可分为两种: 1.父组件传递数据给子组件 2.子组件传递数据给父组件   父组件传递数据给子组…
背景 在电商购物的场景下,当我们点击购物时,后端服务就会对相应的商品进行减库存操作.在单实例部署的情况,我们可以简单地使用JVM提供的锁机制对减库存操作进行加锁,防止多个用户同时点击购买后导致的库存不一致问题. 但在实践中,为了提高系统的可用性,我们一般都会进行多实例部署.而不同实例有各自的JVM,被负载均衡到不同实例上的用户请求不能通过JVM的锁机制实现互斥. 因此,为了保证在分布式场景下的数据一致性,我们一般有两种实践方式:一.使用MySQL乐观锁:二.使用分布式锁. 本文主要介绍MySQL…
上一篇文章(Android智能手机上的音频浅析)说本篇将详细讲解Android智能手机中各种音频场景下的音频数据流向,现在我们就开始.智能手机中音频的主要场景有音频播放.音频录制.语音通信等.不同场景下的音频数据流向有很大差异,即使是同一场景,在不同的模式下音频数据流向也有所不同. 1,音频播放 Android系统audio框架中主要有三种播放模式:low latency playback.deep buffer playback和compressed offload playback. a)l…
前言 俗话说,工欲善其事必先利其器. 对于我们经常使用的开发工具多一些了解,这也是对我们自己工作效率的一种提升. 场景 作为开发,我们经常会遇到各种bug,大部分的bug很明确,我们直接可以打断点定位到. 但是有的情况下,我们的断点可能在某个循环中~而且这种循环量有点大,如果手动F8一直等到自己想要的参数出现,然后再详细查看每个参数的值,这个未免有些麻烦. 这个时候呢~brakpoint properities就派上用处了 用法 public static void main(String[]…
承接之前的博:亿级流量场景下,大型缓存架构设计实现 续写本博客: ****************** start: 接下来,我们是要讲解商品详情页缓存架构,缓存预热和解决方案,缓存预热可能导致整个系统崩溃的问题以及解决方案: 缓存--->热: 预热:热数据 解决方案中和架构设计中,会引入大数据的实时计算技术---> storm: 为什么引入这storm,必须是storm吗,我们后面面去讲解那个解决方案的时候再说: 为什么引入storm: 因为一些热点数据相关的一些实时处理方案,比如快速预热,…
*****************开篇介绍**************** ----------------------------------------------------------------------------------------------------------------------- 三个重要的标准: ---大型缓存架构中需要首先说一下: 海量数据:支持海量数据缓存,支持大规模数据: 高并发:在亿级QPS的场景下,可以做到满足业务需求: 高可用:表示redis可以做…
  1.如何拆分含有多种分隔符的字符串¶ ''' 实际案例: 我们要把某个字符串依据分隔符号拆分不同的字段,该字符串包含多种不同的分隔符,例如: s=’ab;cd|efg|hi,jkl|mn\topq;rst,uvw\txyz’,其中<,>, <;>, <|>, <\t>都是分隔符号,如何处理? 解决方案: 1.连续使用str.split(),每一次处理一种分隔符号: 2.使用正则表达式的re.split(),一次性拆分字符串. ''' In [1]: #解…
背景 在电商购物的场景下,当我们点击购物时,后端服务就会对相应的商品进行减库存操作.在单实例部署的情况,我们可以简单地使用JVM提供的锁机制对减库存操作进行加锁,防止多个用户同时点击购买后导致的库存不一致问题. 但在实践中,为了提高系统的可用性,我们一般都会进行多实例部署.而不同实例有各自的JVM,被负载均衡到不同实例上的用户请求不能通过JVM的锁机制实现互斥. 因此,为了保证在分布式场景下的数据一致性,我们一般有两种实践方式:一.使用MySQL乐观锁:二.使用分布式锁. 本文主要介绍MySQL…
转载:<StringBuilder在高性能场景下的正确用法> by 江南白衣 关于StringBuilder,一般同学只简单记住了,字符串拼接要用StringBuilder,不要用+,也不要用StringBuffer,然后性能就是最好的了,真的吗吗吗吗? 还有些同学,还听过三句似是而非的经验: 1. Java编译优化后+和StringBuilder的效果一样: 2. StringBuilder不是线程安全的,为了“安全”起见最好还是用StringBuffer: 3. 永远不要自己拼接日志信息的…
https://www.cnblogs.com/KevinGeorge/p/8563458.html 一.域控windows安全日志基本操作 1.打开powershell或者cmd 1 #gpedit.msc 打开配置: 关于账户安全性的策略配置在账户配置哪里 2.打开控制面板->系统与安全->事件查看器->windows日志->安全: 希望这里配置的时间足够长久,以便于查看日志 选择筛选器,筛选这一条: 来查看这个是很常用的一个,当然审核成功也很有用,那是你知道那个时间确定被入侵…
浅谈Vue不同场景下组件间的数据“交流”   Vue的官方文档可以说是很详细了.在我看来,它和react等其他框架文档一样,讲述的方式的更多的是“方法论”,而不是“场景论”,这也就导致了:我们在阅读完文档许多遍后,写起代码还是不免感到有许多困惑,因为我们不知道其中一些知识点的运用场景.这就是我写这篇文章的目的,探讨不同场景下组件间的数据“交流”的Vue实现   父子组件间的数据交流 父子组件间的数据交流可分为两种: 1.父组件传递数据给子组件 2.子组件传递数据给父组件 父组件传递数据给子组件—…