Ni Blog

「拨开迷雾见月明」

多租户下的动态数据源切换

使用场景 多租户:使用SaaS交付,如果需要给每个租户数据库,就需要在请求访问时根据租户切换数据源 分库分表:为了提高性能和扩展性,将数据分散到多个数据库或表中,根据分片规则来选择正确的数据源,实现分库分表 读写分离:为了提高数据库的读写性能,可能会采用读写分离的方式,根据读写操作的类型来选择合适的数据源,实现读写分离。 … 实现原理 1. AbstractRout...

DBOS面向云原生的操作系统

前言 软件性能大多限制于数据库 Spark任务非常小,用进程/线程来管理并不合适,太重了,并且进程线程的调度是单机的,DataBricks需要跨越多个计算机调度 因为Linux是个单机的操作系统,但是如今的计算都是分布式的,所以必须有k8s这样的软件来管理应·用数据、身份验证系统、消息传递、集群管理….. 但是Linux太老了,而Kubernetes 太复杂 于是扎哈...

云原生的代表技术

前言 通过对云原生的探索可以了解到,云原生的目标为: 高可用 适应不同规模 敏捷 成本 随着技术不断发展,诞生了许多不同技术成为云原生的代表技术 容器技术 微服务 服务网格 不可变基础设施 声明式设计 DevOps 1. 容器技术 容器技术分为了多种阶段,随着技术的发展,容器技术变得越来越成熟 1.1 chroot阶段:隔离文件系...

探索云原生

1 云原生的定义 过去几年间,云原生的定义一直在变化和发展演进,不同时期不同的公司对此的理解和诠释也不尽相同,因此往往带来一些疑惑和误解。 1.2 Pivotal 对云原生的定义 2015 年,来自 Pivotal公司的技术产品经理 Matt Stine,首次提出了云原生(Cloud Native)的概念。 云原生是一个组合词,“云”表示应用...

工厂模式集成Oss

集成结构 将各类厂商Oss配置存入数据库 项目启动初始化,读取配置存入缓存 定义一个Oss的Factory的工厂类 在第一次调用时,创建Client并根据厂商类型存入工厂类的Map中进行缓存 后续每次获取时判断是否为空或者配置不同如果没变就直接返回Client实例 初始化 定义类实现ApplicationRunner接口并重写方法run(),可以...

云效

学习使用云效的3个基本功能 代码管理 制作仓库 流水线 代码管理 在云效中,它为我们提供了一个内部的代码管理仓库。其实就和github,gitlab是一样的,供我们和团队内的其它同学一起协作开发。 以本地的一个工程代码smartplan-user为例,将工程代码上传到云效的代码管理,然后再次基础上进行协作开发。 新建代码仓库 ...

DevOps详解

1. 什么是DevOps DevOps是一种思想、一组最佳实践、以及一种文化 DevOps 是软件工程领域中的一种文化和实践方法,旨在促进开发团队与运维团队之间的协作,从而实现更高效、更可靠的软件交付。 传统开发和运维之间存在一堵墙,开发人员想改变而运维人员想要稳定。另外,传统开发工具与运维工具也存在一堵墙,并没有打通成为一条工具链。而为了强调开发运维之间 沟通合作 这一点D...

实习项目-心跳检测报警

前言 目前所有报警在云服务器,想要改为在ICSC服务器(与硬件交互相关业务)实现当机器状态改变,根据不同机器,发送对应的报警目标(微信,企业微信,钉钉) 前系统流程 1. MQTT接收回调,如果为心跳则更新心跳 if(CallAccessControlMethodEnum.UPDATE_HEART.getCmd() .equals(accessMQTTM...

实习项目-MQTT实战

前言 学习MQTT协议过后,从代码中探索控制硬件流程 提前准备 部署依赖 <dependency> <groupId>org.eclipse.paho</groupId> <artifactId>org.eclipse.paho.client.mqttv3</artifactId> ...

实习项目-MQTT协议

前言 实习公司主要项目为物业项目,其中包含了物业所有相关业务,包括硬件设备例如大门,闸机,摄像头等控制。项目中需要使用MQTT协议进行控制 1 MQTT协议介绍 MQTT协议全称是(Message Queuing Telemetry Transport),即消息队列遥测传输协议。 是一种基于发布/订阅(Publish/Subscribe)模式的轻量级通讯协议,并且该协议构建于...