背景在5.3.0版本以前,ShardingSphereJDBC同时支持JavaAPI、YAML、SpringBootStarter和SpringNamespace等配置方式。其中,为兼容Spring的配置方式,给社区带来了以下难题:当新增或更新API时,需要调整多项配置文件,工作量大。社区需要维护多重配置文档&示例。SpringBean生命周期管理易受项目其他依赖的影响:如PostProcessor无法正常执行[1][2]。SpringBootStarter&SpringNamespace配置风格与ShardingSphere标准的YAML存在着...
2023-02-27 16:06:04 509浏览 0点赞 0回复 0收藏
背景介绍TerraformTerraform[1]是一个Hashicorp[2]开源的基础设施自动化编排工具,使用IaC的理念来管理基础设施的变更,并得到了AWS,GCP,AZURE等公有云厂商的支持以及社区提供的各种各样的provider,已成为「基础设施即代码」领域最流行的实践方式之一,Terraform有以下优点:📌支持多云部署Terraform适用于多云方案,将类似的基础结构部署到阿里云、其他云提供商或者本地数据中心。开发人员能够使用相同的工具和相似的配置文...
2023-02-27 16:04:58 220浏览 0点赞 0回复 0收藏
本文主要分为3部分,将依次介绍:基于ShardingSphere的分布式数据库「负载均衡架构搭建」要点结合实际的「用户问题案例」,介绍引入「负载均衡」的影响介绍并展示ShardingSphere分布式数据库在云上的「一站式解决方案」要点介绍ShardingSphere负载均衡架构搭建要点ApacheShardingSphere是一款分布式的数据库生态系统,可以将任意数据库转换为分布式数据库,并通过数据分片、弹性伸缩、加密等能力对原有数据库进行增强。它由Shar...
2023-02-27 16:03:15 244浏览 0点赞 0回复 0收藏
前言DistSQL(DistributedSQL)是ApacheShardingSphere特有的操作语言,它自从5.0.0Beta版本面世以来,始终保持着高速的迭代,并逐步为用户提供了规则管理、集群管理、元数据管理等诸多特性,越发迈向『成熟』。与此同时,DistSQL又仍然十分『年轻』。ShardingSphere社区时常会收到关于DistSQL的想法和建议,它们为DistSQL的成长注入活力,也带来更大的想象空间。经过不断总结与碰撞,在5.3.0版本来临之际,社区为DistSQL完成了...
2023-02-27 15:59:59 1316浏览 0点赞 0回复 0收藏
一、文章背景ApacheShardingSphere提供了数据加密模块,通过对用户输入的SQL进行解析,并依据用户提供的加密规则对SQL进行改写,从而实现对原文数据进行加密,并将原文数据(可选)及密文数据同时存储到底层数据库。在用户查询数据时,它仅从数据库中取出密文数据,并对其解密,最终将解密后的原始数据返回给用户。但是由于加密算法是将整串字符串加密,导致模糊搜索功能无法实现。数据加密后,很多业务都需要使用模糊搜索功能...
2023-02-27 15:58:41 1498浏览 0点赞 0回复 0收藏
ApacheSkyWalking作为一个分布式系统的应用性能监控工具,它观察服务网格中的指标、日志、痕迹和事件。其中SkyWalkingOAP高性能的数据流处理架构能够实时处理庞大的数据流量,但是这些海量数据的存储更新和后续查询对后端存储系统带来了挑战。SkyWalking默认已经提供了多种存储支持包括H2、OpenSearch、ElasticSearch、MySQL、TiDB、PostgreSQL、BanyanDB。其中MySQL存储提供的是针对单机和单表的存储方式(MySQL的集群能力需要...
2023-02-27 15:47:27 285浏览 0点赞 0回复 0收藏
最近调研了下任务调度系统中间件,包括xxljob、elasticjob等,发现跟任务队列有一些类似的能力,比如通过API(事件)触发任务执行。随即想到,能否用任务调度系统覆盖任务队列的场景呢?另外,一直以来,很多同学也经常会产生困惑,任务队列和消息队列究竟有什么区别?因此,本文通过多个维度来进行拆解,试着分析任务队列、消息队列、任务调度系统这三类中间件究竟有哪些不同,究竟谁更适合什么场景。从基本功能说起对比系统角...
2022-10-27 13:56:03 1098浏览 0点赞 0回复 0收藏
生产实践中,如果遇到业务流量变高导致服务负载升高甚至报警,我们的第一反应往往是「加机器」。俗话说,能用钱解决的问题都不是问题。俗话又说,充钱你就能变得更强。但是,作为一个有理想有抱负的架构师,除了「加机器」,其实你的微服务还能更优雅、更精细地进行优化。本文预计阅读时间10分钟,将从以下三个方面展开:从「AKF扩展立方」说起Y轴扩展的常用模式z轴扩展的思想与应用1、从「AKF扩展立方」说起在上一篇文章,我们...
2022-10-27 13:55:03 473浏览 0点赞 0回复 0收藏
上一篇文章我们从「存储选型」角度学习了架构师的基本能力。今天将从存储的上一层「服务维度」学习架构师的第二项常用能力——微服务设计与治理。如何设计合理的微服务架构?如何保持微服务健康运行?这是我们对微服务进行架构设计过程中非常关注的两个问题。本文对微服务的生命周期定义了七个阶段,如下图所示。围绕这七个阶段总结了16条常用原则。1、微服务规划原则1:按照业务能力(businesscapabilities)来规划或拆微服务...
2022-10-27 13:53:51 842浏览 0点赞 0回复 0收藏
经常有人问,架构师的学习路线是什么?我一般推荐架构师的基本功,是从「存储选型」开始的。本文整理了存储选型的思路和整体框架,主要包括几个部分内容:了解目前的存储技术趋势,以及对开发人员新的要求存储选型的原则,避免日常的经典误区结合典型数据库特点,说明如何进行存储选型,提高业务开发效率常见的场景和解决方案1、存储技术发展看存储选型1.1存储类型多元化DBEngines数据库排名并不代表数据库的安装数量,或者使用...
2022-10-27 13:53:27 500浏览 0点赞 0回复 0收藏
刚刚在群里看到消息说,时隔一年,canal1.1.6正式release了,赶紧上去看看有什么新特性。(居然才发布了6个小时,前排围观)1、什么是canalcanal[kə'næl],译意为水道管道沟渠,主要用途是基于MySQL数据库增量日志解析,提供增量数据订阅和消费。应该是阿里云DTS(DataTransferService)的开源版本。如果想了解更多,可以上github上看官方文档,或者我之前写过的系列基于canal1.1.4版本的入门文档。2、重要新特性我们现在生产...
2022-10-27 13:52:32 636浏览 0点赞 0回复 0收藏
最近新写了一个中间件「运行时动态日志等级开关」,其中使用JavaSPI机制实现了自定义配置中心,保证良好的扩展性。项目地址,走过路过可以点个star:)https:github.comsaiguLogLevelSwitch在使用过程中,突然发现SPI其实和日常写API接口,然后进行implements实现非常相似,那SPI到底和普通API实现有啥区别呢?带着这个问题,我们一起来梳理下SPI机制吧。本文预计阅读时间10分钟,将围绕以下几点展开:什么是SPI机制?S...
2022-10-27 13:51:07 576浏览 0点赞 0回复 0收藏
1、背景由于种种原因,最近将核心业务生产使用的HBase迁移到了云上的弹性MapReduce(EMR)集群上,并使用了EMR的HBase组件默认参数配置。结果在流量高峰期出现了宿主机故障,挂掉了两个core节点(部署了regionserver和datanode),大量regionrit,花了15分钟才自动恢复,硬生生吃了一个P0故障。复盘的时候发现,由于云上EMR对hdfs的socket超时参数默认设置了900000(15min),导致了region重新上线读取故障节点WAL日志的时候足足等...
2022-10-27 13:50:32 795浏览 0点赞 0回复 0收藏
1、背景由于种种原因,最近将核心业务生产使用的HBase迁移到了云上的弹性MapReduce(EMR)集群上,并使用了EMR的HBase组件默认参数配置。结果在流量高峰期出现了宿主机故障,挂掉了两个core节点(部署了regionserver和datanode),大量regionrit,花了15分钟才自动恢复,硬生生吃了一个P0故障。复盘的时候发现,由于云上EMR对hdfs的socket超时参数默认设置了900000(15min),导致了region重新上线读取故障节点WAL日志的时候足足等...
2022-10-27 13:49:02 756浏览 0点赞 0回复 0收藏
最近排查一个bug,发现了一系列有意思的东西,对「自定义线程池」、「Jetty线程模型」都有了一些新的认识。本文预计阅读时间10分钟,包括:问题表现常见原因筛查根因与源码分析最佳实践一些小TIPS1、问题表现预发环境偶发请求失败异常,服务端显示错误信息为:RequiredStringparameter'seriesbaid'isnotpresent对应controller的api为乍一看,是一个非常简单的异常,请求参数里面没有带seriesbaid,导致失败。但是,经过确认,前...
2022-10-27 13:48:14 527浏览 0点赞 0回复 0收藏
本文是ServiceMesh系列第1篇随着云原生时代的来临,使用微服务架构的朋友们开始听到一个新的技术名词——ServiceMesh(现在来说已经不算新了)。对于一项新技术的学习,总归绕不过两个问题:它是什么?为什么需要它?本文将围绕这两个问题进行展开,期望对ServiceMesh有一个综述性的了解。最后,引发一个核心的思考:到底谁才需要ServiceMesh1、什么是ServiceMeshServiceMesh在国内被翻译「服务网格」。目前比较公认的是Buoyant...
2022-10-27 13:47:03 844浏览 0点赞 0回复 0收藏