基于1.1.5-alpha版本,具体源码笔记可以参考我的github:https://github.com/saigu/JavaKnowledgeGraph/tree/master/code_reading/canal 本文将对canal的启动模块deployer进行分析。 Deployer模块(绿色部分)在整个系统中的角色如下图所示,用来启动canal-server.   模块内的类如下:   为了能带着目的看源码,以几个问题开头,带着问题来一起探索deployer模块的源码。 CanalServer启动过程中配置如何加载? CanalServe...

本文是ServiceMesh系列第1篇 随着云原生时代的来临,使用微服务架构的朋友们开始听到一个新的技术名词——ServiceMesh(现在来说已经不算新了)。 对于一项新技术的学习,总归绕不过两个问题: 它是什么? 为什么需要它? 本文将围绕这两个问题进行展开,期望对ServiceMesh有一个综述性的了解。 最后,引发一个核心的思考: 到底谁才需要ServiceMesh? 1、什么是ServiceMesh ServiceMesh 在国内被翻译「服务网格」。 目前比较公认的是Buoyant公司的CEOWilliamMorgan给出的定义: ServiceM...

做一个新业务,我该选择SQL还是NoSQL? 很多时候我们都会有这样的疑问。 如果这时候直接去看MySQL、Mongo、HBase、Redis等数据库的用法、特点、区别,其实有点太着急了。 这时候,最好从「数据模型」开始讨论。 1、SQLvsNoSQL 现在最著名的数据模型应该是SQL,它基于EdgarCodd在1970年提出的关系模型: 数据被组织成关系(relations),在SQL中称为表(table),其中每个关系都是元组(tuples)的无序集合(在SQL中称为行)。 那什么是NoSQL? 现在很多非关系型数据库会被称为NoSQL,其含义往往被解释“Notonl...

1.前言 随着业务的发展,MySQL数据库中的表会越来越多,表中的数据量也会越来越大,相应地,数据操作的开销也会越来越大;另外,无论怎样升级硬件资源,单台服务器的资源(CPU、磁盘、内存、网络IO、事务数、连接数)总是有限的,最终数据库所能承载的数据量、数据处理能力都将遭遇瓶颈。 分表、分库和读写分离可以有效地减小单台数据库的压力。 而数据库中间件,也火了很长一段时间,基本上每个大厂都会自研一套。 本文主要针对业界主流的数据库中间件的实现、功能、成本等方面进行对比,总结数据库中间件的实现方式,并展望未来的可能发展。 2.实现方式 一般来说,对于数据库中间件,可以在以下六个层次做切入。 ...

本文是Netty系列第7篇 上一篇文章我们深入学习了Netty逻辑架构中的核心组件EventLoop和EventLoopGroup,掌握了Netty的线程模型,并且介绍了Netty4线程模型中的无锁串行化设计。 今天,我们继续学习Netty逻辑架构中的另一个核心组件ChannelHandler和ChannelPipeline。 如果说线程模型是Netty的 “核心内功”,那么ChannelHandler就是Netty最著名的 “武功招式”,是我们日常使用Netty时接触最多的组件。 引用《Nettyinaction》中的一句话 From th...

本文是Netty系列第5篇 上一篇文章我们对于I/O多路复用、JavaNIO包和Netty的关系有了全面的认识。 到目前为止,我们已经从I/O模型出发,逐步接触到了Netty框架。这个过程中,基本解答了Netty是什么、为什么使用Netty等前置问题。给我们学习Netty提供了最原始的背景知识。 有了这些做基础,下面我们可以开始慢慢去揭开Netty的神秘面纱了。 本文预计阅读时间约5分钟,将重点围绕以下几个问题展开: 如何用Netty编写一个Server端服务Demo 从Demo看Netty的逻辑架构,初识各个组件 1.编写一个Server端Demo 1.1基于主...

回顾上一篇核心概念,我们知道RocketMQ的消息模型分为生产、存储(消息堆积)、消费三大部分。 消息模型三大部分 因此,如何保证消息不丢失,也是从这三个环节来考虑。 关键字摘要 生产、存储(消息堆积)、消费三个环节保证消息不丢失 生产环节:消息类型,消息确认机制、失败重试机制 存储环节:同步/异步刷盘、同步/异步复制slave 消费环节:消息确认机制(至少消费成功一次)、失败重试机制、死信队列机制 Q1:如何保证「消息生产」不丢失? 先想想什么情况下,消息生产会丢失消息呢? 生产者将发送消息时,如果出现了网络抖动或者通信异常等问题,消息就有可能会丢失。 那怎么解决...

每周总得有点思考。 这周聊了个需求,评估下给客户做一套私有化部署方案要多少成本。 本身我们是一个比较纯粹的saas公司,整个技术架构都是基于云端构建,没有太多私有化部署的经验。 奈何客户给得多呢,也得试着搞一搞。 不过还没确定方案,简单理一理思路吧。 1、微服务saas是怎样的 这是我们一个比较直观的架构图。 以公有云资源为底座,包括云主机和云数据库。 在这之上构建我们的微服务体系,包括k8s、中间件、微服务、监控系统、CI/CD系统。 这么一套东西,该怎么做私有化部署呢? 2、私有化部署的需求有哪些 私有化的需求分为两类,「功能性需求」和「非功能性需求」。 「功...

白话3分钟,快速了解RocketMQ如何存储消息。 看完如果不了解,欢迎来打我。 我们知道RocketMQ主要分为消息生产、存储(消息堆积)、消费三大块领域。 那接下来,我们白话一下,RocketMQ是如何存储消息的,揭秘消息存储全过程。 注意,如果白话中不小心提到相关代码配置与类名,请参考RocketMQ4.9.4版本 关键字摘要 存储模型与存储类型 如何保证存储消息不丢失 如何提高写入性能 如何清理过期消息 存储模型是什么?有哪些存储类型? RocketMQ使用了一种基于日志的存储方式,将消息以顺序写入的方式追加到文件中,从而实现高性能的消息存储和读取。 Rocket...

= 白话3分钟,快速了解RocketMQ如何消费消息。 看完如果不了解,欢迎来打我。 我们知道RocketMQ主要分为消息生产、存储(消息堆积)、消费三大块领域。 前面已经介绍了生产消息、存储消息两大块内容,那接下来,我们白话一下RocketMQ是如何消费消息的,揭秘消息消费全过程。 注意,如果白话中不小心提到相关代码配置与类名,请参考RocketMQ4.9.4版本 关键字摘要 核心概念:消费者与消费组、订阅关系、消费模式 核心流程:消费拉取、负载均衡、消息消费 Q1:消息消费有哪些核心概念? 消费者与消费组、订阅关系 1)消费者与消费组 消息消费以组的模式开...

每周总得有点思考。 最近LLM的发展依旧如火如荼,各类行业新闻层出不穷。 除了做LLM本身的技术,如何将LLM结合具体行业、结合具体产品进行落地,是很多公司在探索的。 这周我也针对自己负责的业务,思考了一下如何和LLM结合,创造新的业务价值点。 从LLM出发,想想可以怎么用 文生文、文生图、AIagent,这些是LLM当前一些比较典型的能力。 我先尝试从这些能力出发,想想可以如何利用。 一个典型的代表就是通过文生文,实现Text2SQL、chat2DB等类似场景,通过自然语言输入转化为SQL或其他数据库查询语言。 业界的项目挺多,结合openai的API写了个Demo快速体验了一下...

关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~