首页 文章 精选 留言 我的

精选列表

搜索[分布式调度],共10000篇文章
优秀的个人博客,低调大师

YugabyteDB 2.1.1 发布,强大的分布式 NewSQL 数据库

YSQL的变化 [YSQL]提高运行索引扫描以查询数据时的性能。#3103 托管:处理表墓碑压缩#3360 系统改进 减少交易状态平板电脑的日志段大小。#3699 修复〜Tablet和yb :: tablet :: Tablet :: RegularDbFilesChanged()之间的数据争用。#3519 MiniMaster应该在重新启动时设置master_addresses。#3336 [cdc]更改CDC的复制命令。#2838 修改ldb工具为加密感知。#3455 创建数据库在docker yugabyted内部失败。#3742 更新说明:https://github.com/yugabyte/yugabyte-db/releases/tag/v2.1.1

优秀的个人博客,低调大师

YugabyteDB 2.1.0 发布,强大的分布式 NewSQL 数据库

YSQL的变化 [YSQL]修复系统表和共置表的表位置缓存。#3416 [YSQL]启用ALTER TABLE IF EXISTS语法。#3417 [YSQL]在PgDocOp中使用std :: future来获取RPC结果。#3240 [YSQL]如果创建唯一索引,则清理唯一索引。#3462 [YSQL]消除冗余外键检查。#3328 [YSQL]尽可能批处理所有写操作。#2934 [YSQL]允许创建数据库编码unicode / utf8#3595 [YSQL]修复了yb_dml_systable_scan中测试错误的假设。 [YSQL]对YBqlOp和YBPgsqlOp使用智能指针。#3641 [YSQL]提供GFLAG以抑制不支持的错误。#3633 YCQL变更 [YCQL]默认情况下,添加gflag将CQL表创建为事务性的;将GROUP从保留字更改为关键字;修复重复的列错误消息。#3313 [YCQL]修复了CatalogManager中意外的“重复对象”错误。#2475 [YCQL]修复:信号11:段错误:yb :: ql :: PreparedResult :: PreparedResult。#3415 [YCQL]如果未绑定变量,则应用程序将停留在BoundStatement执行中。#3419 系统改进 将默认历史记录保留时间设置为120秒。#3373 重置百分位数后修复指标错误。#3362 从transaction_participant.cc中提取类以分离文件。#1032 写入停止后恢复。#3331 修复yugabyted进程重新启动循环的问题。#3207 在交易参与者处跟踪复制的批次。#3220 回填索引表。#448 [共置]使用4字节PG表ID作为扩展坞前缀。#3365 YB入站RPC在软内存限制上节流。#2563 BlockBasedMemory内存跟踪器应使用“平板电脑” MetricsEntity而不是“服务器”。#3364 指标直方图的均值应基于当前值,而不是历史值。#3470 使yugabyted与Docker卷挂载一起工作。#3513 添加了Graph来跟踪Rocksdb写拒绝。#2871 WAL关闭之前的Fsync。#3490 为redis指标启用百分位。#3362 OpenKeyValueTablet中可能已经存在BlockBasedMemory记忆跟踪器。#3364 [cdc]避免CDCReadRpc出现争用情况。#3441 从平板电脑关闭呼叫TransactionParticipant关闭。#3495 将yugabyted指向系统conf文件(如果存在)。#3169 回填索引表-TServer端实现,用于回填非唯一索引。#448 主机代管:使读取表墓碑#3359 添加了将混合时间过滤器设置为现有rocksdb文件的功能。#1032 截断表后,服务器在启动时崩溃。#3524 将所有yugabyte修改后的数据移动到中央var dir下。#3524 将物理时间添加到cdc_state表。#2837 docdb:遍历kTransactionId#3482的意图 防止从分离的rocksdb实例回调防止插入和截断之间的竞争状态;在截断时禁用rocksdb flush。#3288 在超级块中保留cdc min复制索引。#3418 [CDC]清理cdc_state行中已删除的流。#2529 yugabyted不能以自定义配置文件开头。#3634 [2DC]创建新的BootstrapProducer API。#3319 修复CDCProducer上的密钥处理。#3582 使yb-docker-ctl与python3兼容 回填索引:处理失败的主服务器-> TS rpc。#3627 [cdc]将上一个消费者检查点添加到CDC生产者指标。#2154 将操作追加到日志后,在跟随者处逐出日志缓存。#3665 实施不终止的事务密封。#3220 [共置]主服务器应仅向后续表发出AddTableToTable。#3681 从Heartbeater中提取HeartbeatDataProvider。#3571 避免从关注者发送申请意向。#3698 平台 YW警报改进。#2892 将Universe的“延后警报状态”添加到运行状况检查面板。#2891 添加了UI支持,以便能够暂停和启用警报。#2891 添加切换按钮以获取备份按钮。#3341 将yugaware日志从yugabyted重定向到yugabyte-logs dir。#3516 为只读用户添加功能。 添加端点以支持在YB数据库中创建用户角色。 添加功能以指定要备份的表列表。#3614 修正指标网址检查。#3653 在gflag更新期间请勿合并标志。#3533 添加选项以添加,删除用户 [YW]通过调用onHide回调将ESC键绑定添加到文档以关闭屏幕上的任何模式。#3211 [YW]为currentProvider添加默认值并修复eslint警告。#3332 [YW]在CreateBackups模式中启用多表备份。#3680 添加身份验证以注册新用户。 [YW] [OSS]添加支持以禁用“表”选项卡上的“启用/禁用备份”按钮,并更改禁用的TableAction的颜色 以更好的方式处理整体异常。#3676 更新说明:https://github.com/yugabyte/yugabyte-db/releases/tag/v2.1.0

优秀的个人博客,低调大师

分布式负载均衡算法之亲和性轮询原理

无论是在早期的负载均衡器中,还是当前微服务基于客户端的负载均衡中,都有一个最基础的轮询算法,即将请求平均分布给多台机器,今天聊聊在此基础上, kube proxy是如何实现亲和性轮询的核心数据结构. 了解亲和性策略实现,失败重试等机制 1. 基础筑基 1.1 Service与Endpoints Service和Endpoint是kubernetes中的概念,其中Service代表一个服务,后面通常会对应一堆pod,因为pod的ip并不是固定的,用Servicel来提供后端一组pod的统一访问入口, 而Endpoints则是一组后端提供相同服务的IP和端口集合 在这节内容中大家知道这些就可以来, 1.2 轮询算法 轮询算法可能是最简单的算法了,在go里面大多数实现都是通过一个slice存储当前可以访问的后端所有地址,而通过index来保存下一次请求分配的主机在slice中的索引 1.3 亲和性 亲和性实现上也相对简单,所谓亲和性其实就是当某个IP重复调用后端某个服务,则将其转发到之前转发的机器上即可 2. 核心数据结构实现 2.1 亲和性实现 2.1.1 亲和性之亲和性策略 亲和性策略设计上主要是分为三个部分实现: affinityPolicy:亲和性类型,即根据客户端的什么信息来做亲和性依据,现在是基于clientip affinityMap:根据Policy中定义的亲和性的类型作为hash的key, 存储clientip的亲和性信息 ttlSeconds: 存储亲和性的过期时间, 即当超过该时间则会重新进行RR轮询算法选择 type affinityPolicy struct { affinityType v1.ServiceAffinity // Type字段只是一个字符串不需要深究 affinityMap map[string]*affinityState // map client IP -> affinity info ttlSeconds int } 2.1.2 亲和性之亲和性状态 上面提到会通过affinityMap存储亲和性状态, 其实亲和性状态里面关键信息有两个endpoint(后端要访问的endpoint)和lastUsed(亲和性最后被访问的时间) type affinityState struct { clientIP string //clientProtocol api.Protocol //not yet used //sessionCookie string //not yet used endpoint string lastUsed time.Time } 2.2 Service数据结构之负载均衡状态 balancerState存储当前Service的负载均衡状态数据,其中endpoints存储后端pod的ip:port集合, index则是实现RR轮询算法的节点索引, affinity存储对应的亲和性策略数据 type balancerState struct { endpoints []string // a list of "ip:port" style strings index int // current index into endpoints affinity affinityPolicy } 2.3 负载均衡轮询数据结构 核心数据结构主要通过services字段来保存服务对应的负载均衡状态,并通过读写锁来进行service map进行保护 type LoadBalancerRR struct { lock sync.RWMutex services map[proxy.ServicePortName]*balancerState } 2.4 负载均衡算法实现 我们只关注负载均衡进行轮询与亲和性分配的相关实现,对于感知service与endpoints部分代码,省略更新删除等逻辑, 下面章节是NextEndpoint实现 2.4.1 加锁与合法性效验 合法性效验主要是检测对应的服务是否存在,并且检查对应的endpoint是否存在 lb.lock.Lock() defer lb.lock.Unlock() // 加锁 // 进行服务是否存在检测 state, exists := lb.services[svcPort] if !exists || state == nil { return "", ErrMissingServiceEntry } // 检查服务是否有服务的endpoint if len(state.endpoints) == 0 { return "", ErrMissingEndpoints } klog.V(4).Infof("NextEndpoint for service %q, srcAddr=%v: endpoints: %+v", svcPort, srcAddr, state.endpoints) 2.4.2 亲和性类型支持检测 通过检测亲和性类型,确定当前是否支持亲和性,即通过检查对应的字段是否设置 sessionAffinityEnabled := isSessionAffinity(&state.affinity) func isSessionAffinity(affinity *affinityPolicy) bool { // Should never be empty string, but checking for it to be safe. if affinity.affinityType == "" || affinity.affinityType == v1.ServiceAffinityNone { return false } return true } 2.4.3 亲和性匹配与最后访问更新 亲和性匹配则会优先返回对应的endpoint,但是如果此时该endpoint已经访问失败了,则就需要重新选择节点,就需要重置亲和性 var ipaddr string if sessionAffinityEnabled { // Caution: don't shadow ipaddr var err error // 获取对应的srcIP当前是根据客户端的ip进行匹配 ipaddr, _, err = net.SplitHostPort(srcAddr.String()) if err != nil { return "", fmt.Errorf("malformed source address %q: %v", srcAddr.String(), err) } // 亲和性重置,默认情况下是false, 但是如果当前的endpoint访问出错,则需要重置 // 因为已经连接出错了,肯定要重新选择一台机器,当前的亲和性就不能继续使用了 if !sessionAffinityReset { // 如果发现亲和性存在,则返回对应的endpoint sessionAffinity, exists := state.affinity.affinityMap[ipaddr] if exists && int(time.Since(sessionAffinity.lastUsed).Seconds()) < state.affinity.ttlSeconds { // Affinity wins. endpoint := sessionAffinity.endpoint sessionAffinity.lastUsed = time.Now() klog.V(4).Infof("NextEndpoint for service %q from IP %s with sessionAffinity %#v: %s", svcPort, ipaddr, sessionAffinity, endpoint) return endpoint, nil } } } 2.4.4 根据clientIP构建亲和性状态 // 获取一个endpoint, 并更新索引 endpoint := state.endpoints[state.index] state.index = (state.index + 1) % len(state.endpoints) if sessionAffinityEnabled { // 保存亲和性状态 var affinity *affinityState affinity = state.affinity.affinityMap[ipaddr] if affinity == nil { affinity = new(affinityState) //&affinityState{ipaddr, "TCP", "", endpoint, time.Now()} state.affinity.affinityMap[ipaddr] = affinity } affinity.lastUsed = time.Now() affinity.endpoint = endpoint affinity.clientIP = ipaddr klog.V(4).Infof("Updated affinity key %s: %#v", ipaddr, state.affinity.affinityMap[ipaddr]) } return endpoint, nil 好了,今天的分析就到这里,希望能帮组到大家,了解亲和性轮询算法的实现, 学习到核心的数据结构设计,以及在产生中应对故障的一些设计,就到这里,感谢大家分享关注,谢谢大家 > 微信号:baxiaoshi2020 > 关注公告号阅读更多源码分析文章 > 更多文章关注 www.sreguide.com > 本文由博客一文多发平台 OpenWrite 发布

优秀的个人博客,低调大师

TiDB 4.0.0-beta 发布,分布式 NewSQL 数据库

TiDB 4.0.0-beta现已发布, 该版本更新内容如下: Improvements Index Join通过考虑驱动表和从动表的行数来提高计算成本的准确性#12085 当索引中可以完全覆盖查询中涉及的列时,提高性能#12022 通过支持索引合并功能#10121#10512#11245#122248#12248#12305#12305#12305#12248#12248#12305#12305#12248#12305#12305#12248#12248#12248#12305 通过缓存索引结果并消除重复的结果,提高范围计算的性能并减少 CPU 开销#12856 将慢速日志的级别与普通日志的级别分离#12359 将query-log-max-len参数的默认值增加至4096以减少被截断的 SQL 输出的数量。该参数可以动态调整。#12491 ...... New Features 支持在ADMIN SHOW DDL JOBS中使用LIKEorWHERE子句进行条件过滤#12484 在information_schema.tables表中添加TIDB_ROW_ID_SHARDING_INFO列以输出RowID散射信息(例如,表A中的SHARD_ROW_ID_BITS值为"SHARD_BITS={bit_number}")#13418 添加oom-use-tmp-storage参数(默认情况下为true),以控制当执行单个 SQL 语句的内存使用量超过 mem-quota-query并且 SQL 包含Hash Join时,是否使用临时文件来缓存中间结果#11832#11937#12116#12067 支持通过HTTPinfo/all接口查询集群中 TiDB 服务器启用的 binlog 状态#13025 支持在column属性中添加AutoRandom关键字,以控制系统是否自动向主键分配随机整数,从而避免了由AUTO_INCREMENT主键引起的热点问题#13127 支持 Table Locks #11038 ...... Changed Behaviors 优化SQL错误消息的错误代码以消除该ERROR 1105 (HY000)代码(Unknown Error类型) #14002#13874#13733#13654#13646 #13540#13366#13329#13300#13233 #13033#12866#14054 当执行INSERT/REPLACE/DELETE/UPDATE期间使用的内存超过MemQuotaQuery配置项指定的限制时,打印日志或取消 SQL 执行。实际行为取决于OOMAction配置#14179#14289#14299 Bugfix 修复与 RBAC 有关的几个问题#13820#13940#14090#13940#13014 修复由于SELECT语句包含union而无法创建 VIEW 的问题#12595 修复与CAST功能有关的几个问题 #12858#11968#11640#11483#11493 #11376#11355#11114#14405#143405 #13837#13401#13334#12652#12864 #12623#11989 更多详细信息可查看发布说明。

优秀的个人博客,低调大师

YugabyteDB 2.0.10 发布,强大的分布式 NewSQL 数据库

YSQL的变化 [YSQL]修复了PgDocOp寿命太短的问题。 [YSQL]如果未更新任何“ NOT NULL”列,则“ UPDATE”将失败#3174 [YSQL]在macOS上启动postmaster时强制初始化网络库。2509 YCQL变更 [YCQL]删除后卡在键空间中的表#3032 系统改进 实现一种位图,并从YBTransaction中提取CleanupTransaction。#3220 改进了rocksdb损坏错误日志记录。#2961 转储内存使用量时添加了TCMalloc统计信息。#3190 平台 [YW]修复了无限更新状态导致React失败的问题。原因是在componentDidUpdate中反复调用setState将创建无限深度的嵌套更新。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册