系统架构
文章平均质量分 95
说好不能打脸
我没想过赢,我只是不想输
展开
-
InfluxDB时序数据库基本使用介绍
InfluxDB就是一种时序数据库,除此之外目前业界流行的时序数据库还有Kdb、TDengine、Prometheus(本身内置了一个时序数据库)、Victoriametrics(另一个推荐的时序数据库)。InfluxDB由InfluxData公司开发,使用Go编程语言编写,适用于存储和检索操作监控、应用指标、物联网传感器数据和实时分析等领域的时间序列数据。它的数据模型基于时间序列,其中时间戳作为索引,不支持对过去数据的修改,因此特别适合。原创 2024-07-01 20:19:13 · 2776 阅读 · 0 评论 -
Google Guice超轻量级依赖注入容器
Google Guice是Goolge开源的一款超轻量级依赖注入容器,超轻量的特点主要体现在:可与其它依赖注入容器混合使用,例如和Spring/Spring Boot的IOC容器混合使用;不需要任何配置信息,只需要引入几个有限的依赖包即可以使用;使用简单,只需要掌握几个有限的注释就可以使用;相对更重的依赖注入容器,Google Guice运行速度更快,消耗更少的系统资源。原创 2024-06-06 20:33:16 · 880 阅读 · 0 评论 -
VFS-FUSE用户态文件系统设计说明
针对文件系统操作的特异性需求,可以用过操作系统内核中提供的一种基于用户态的文件系统开发接口,由应用程序开发人员自行实现一个由上层应用系统支持的文件系统。这个统一的用户态文件系统接口就是FUSE。本文主要介绍FUSE编程的基础知识。原创 2024-04-28 08:48:48 · 4489 阅读 · 0 评论 -
应用软件设计不是CRUD:如何进行应用系统功能模块的耦合性设计
应用软件开发,就是对数据库进行增删改查操作?软件架构选型,就是选择几款流行的中间件?软件架构设计,就是把几个中间件串在一起?如果真的这么认为,那么对软件设计可能还存在理解的深度。本篇文章从应用软件的模块设计层面讲述软件设计的真正要求。原创 2021-07-23 21:49:02 · 8293 阅读 · 19 评论 -
架构设计:系统存储(1)——块存储方案(1)
在“系统存储”专题中,我们将按照“从上至下”的顺序向读者介绍整个“系统存储”体系。在这个专题中我们将至少介绍机械硬盘的主要结构、硬盘阵列的分类、操作系统的EXT文件系统、NAS文件共享存储方案、分布式文件系统重要技术点和分布式文件系统示例。最后如果有时间我们将自行设计一款分布式文件系统。原创 2016-08-18 20:19:21 · 17724 阅读 · 15 评论 -
架构设计:系统存储(8)——MySQL数据库性能优化(4)
虽然锁机制是InnoDB引擎中为了保证事务性而自然存在的,在索引、表结构、配置参数一定的前提下,InnoDB引擎加锁过程是一样的,所以理论上来说也就**不存在“锁机制能够提升性能”这样的说法**。但理解InnoDB引擎中的锁机制可以帮助我们在高并发系统中尽可能不让锁和死锁成为数据库服务的一个性能瓶颈。原创 2016-10-07 16:51:37 · 7678 阅读 · 9 评论 -
架构设计:系统存储(12)——MySQL主从方案业务连接透明化(中)
如果数据库中单张数据表的规模达到了亿级(甚至以上),那么查询压力集中在一个读节点上也不会再有助于查询性能提升。所以在必要的情况下,我们还需要继续对上文给出的MySQL集群方案进行改进,让其能够适应更庞大的结构化数据规模。具体的思路就是在保持读写分离方案的基础上,对业务系统中结构化数据量达到或者超过亿级规模的若干张业务表进行拆分工作。本篇文章向读者介绍一个由国人开发并完全免费发布的数据库中间件,MyCat。原创 2016-11-10 16:37:42 · 11616 阅读 · 2 评论 -
架构设计:系统存储(10)——MySQL简单主从方案及暴露的问题
从本篇文章开始我们将花一定的篇幅向读者介绍MySQL的各种服务集群的搭建方式。大致的讨论思路是从最简的MySQL主从方案开始介绍,通过这种方案的不足延伸出更复杂的集群方案,并介绍后者是如何针对这些不足进行改进的。MySQL的集群技术方案特别多,这几篇文章会选择一些典型的集群方案向读者进行介绍。原创 2016-10-31 11:12:29 · 22970 阅读 · 19 评论 -
架构设计:系统存储(13)——MySQL横向拆分与业务透明化(1)
之前文章中我们介绍了如何使用MyCat进行读写分离,类似的关系型数据库的读写分离存储方案可以在保持上层业务系统透明度的基础上满足70%业务系统的数据承载规模要求和性能要求。但是这个方案也有一个明显的问题,那就是它没有解决数据存储规模的瓶颈。如果单个节点上某个单表的数据规模超过了千万级,那么这个节点的读操作也会产生性能瓶颈。所以我们还需要进一步使用MyCat的分片技术对业务数据表进行横向拆分。原创 2016-11-29 18:12:13 · 6812 阅读 · 2 评论 -
架构设计:系统存储(14)——MySQL横向拆分与业务透明化(2)
上文提到MyCat的逻辑表支持多种分片规则,表现于schema配置文件中中table标签的rule属性。本节将以MyCat Version 1.6版为基础,介绍几种经常使用的分片规则,这些分片规则都通过rule.xml文件进行定义和配置。原创 2016-11-29 18:15:51 · 6060 阅读 · 4 评论 -
架构设计:系统存储(3)——块存储方案(3)
目前主流的文件系统包括windows下的NTFS文件系统、Linux下的EXT系列文件系统(管理规则已升级到EXT4)、XFS文件系统和Btrfs文件系统。由于本专题的知识体系全部基于Linux操作系统,所以我们不会对NTFS文件系统做过多介绍。在本文中我们主要介绍两种Linux下的文件系统:EXT系列文件系统和XFS文件系统。原创 2016-09-03 16:15:13 · 6974 阅读 · 8 评论 -
架构设计:系统存储(15)——Redis基本概念和安装使用
在本专题讨论Redis时,会首先花一些较少的篇幅介绍Redis的基本安装和使用,然后将深入Redis所支持的数据结构主要讲解Redis底层设计对这些数据结构的支撑,接下来会介绍Redis的主要配置优化事项,最后介绍Redis的集群搭建方式(基于3.X版本)和实施案例。原创 2016-12-04 11:08:35 · 8714 阅读 · 10 评论 -
架构设计:系统存储(16)——Redis事件订阅和持久化存储
在本专题讨论Redis时,会首先花一些较少的篇幅介绍Redis的基本安装和使用,然后将深入Redis所支持的数据结构主要讲解Redis底层设计对这些数据结构的支撑,接下来会介绍Redis的主要配置优化事项,最后介绍Redis的集群搭建方式(基于3.X版本)和实施案例。原创 2016-12-13 11:14:49 · 12364 阅读 · 3 评论 -
架构设计:系统存储(7)——MySQL数据库性能优化(3)
MySQL数据库的性能不止受到性能参数和底层硬件条件的影响,在这两个条件一定的情况下,开发人员对SQL语句的优化能力更能影响MySQL数据库的性能。本文我们和读者一起来讨论一下InnoDB数据引擎下SQL语句常见的工作方式和优化规则。原创 2016-10-01 11:11:04 · 6753 阅读 · 10 评论 -
架构设计:系统存储(11)——MySQL主从方案业务连接透明化(上)
在之前的文章中,我们提到MySQL一主多从集群模式下,对上层业务系统的访问带来了一些问题。本编文章中我们将深入分析这个问题,并介绍如何对这个问题进行改进。MySQL一主多从集群对上层业务系统带来的主要问题是,**上层业务系统需要自行控制本次MySQL数据操作需要访问MySQL集群中的哪个节点**。产生这个问题的主要原因,是因为**MySQL一主多从集群本身并没有提供现成功能,将集群中的节点打包成统一服务并向外提供**原创 2016-11-04 11:11:53 · 6940 阅读 · 9 评论 -
架构设计:系统存储(9)——MySQL数据库性能优化(5)
为了帮助开发人员根据数据表中现有索引情况,了解自己编写的SQL的执行过程、优化SQL结构,MySQL提供了一套分析功能叫做SQL执行计划(explain)。本文我们就为大家介绍一下执行计划功能的使用。原创 2016-10-12 16:19:01 · 8766 阅读 · 6 评论 -
架构设计:系统间通信(14)——RPC实例Apache Thrift 下篇(2)
为了更深入理解服务治理框架的作用、工作原理,下面我们就以Apache Thrift为服务治理框架基础技术,来实现一个简单的服务治理框架。为了保证快速实现,我们使用zookeeper作为服务管理组件的基础技术,使用Apache Thrift作为服务提供者和服务使用者之间约定好的RPC调用方式。原创 2015-11-22 11:39:56 · 9132 阅读 · 19 评论 -
架构设计:系统存储(5)——MySQL数据库性能优化(1)
从本文开始我们将讨论建立在块存储方案之上的关系型数据库的性能优化方案和集群方案。关系型数据库的选型将以创业公司、互联网行业使用最广泛的MySQL数据为目标,但是MySQL的安装过程和基本使用方法等知识并不在我们讨论的范围内。后续几篇文章我们首先讨论影响单个MySQL节点性能的主要因素,然后介绍MySQL读写分离、数据表横纵拆分的原理和技术方案。原创 2016-09-12 17:16:25 · 10842 阅读 · 4 评论 -
架构设计:系统存储(2)——块存储方案(2)
在“系统存储”专题中,我们将按照“从上至下”的顺序向读者介绍整个“系统存储”体系。在这个专题中我们将至少介绍机械硬盘的主要结构、硬盘阵列的分类、操作系统的EXT文件系统、NAS文件共享存储方案、分布式文件系统重要技术点和分布式文件系统示例。最后如果有时间我们将自行设计一款分布式文件系统。原创 2016-08-22 21:54:19 · 10968 阅读 · 3 评论 -
架构设计:系统间通信(44)——自己动手设计ESB(5)
这是对本专题从第19篇文章到第39篇文章中所介绍的知识点的最好的总结。我们自己动手设计ESB中间件,不是为了让它商用,也不是为了让它可以比拟市面上某款ESB中间件,甚至不是为了把ESB中的技术难点的解决全部方案化。我们的目的是检验整个专题中所介绍的知识点是否能在读者自己消化后进行综合应用,是否能做到技术知识的活学活用、按需选型。原创 2016-08-11 20:02:18 · 6610 阅读 · 4 评论 -
架构设计:系统间通信(43)——自己动手设计ESB(4)
这是对本专题从第19篇文章到第39篇文章中所介绍的知识点的最好的总结。我们自己动手设计ESB中间件,不是为了让它商用,也不是为了让它可以比拟市面上某款ESB中间件,甚至不是为了把ESB中的技术难点的解决全部方案化。我们的目的是检验整个专题中所介绍的知识点是否能在读者自己消化后进行综合应用,是否能做到技术知识的活学活用、按需选型。原创 2016-08-07 08:21:33 · 6737 阅读 · 3 评论 -
架构设计:系统间通信(45)——阶段性问题记录
到此为止 《架构设计:系统间通信》专题就暂时告一段落了。这边文章笔者用于暂时记录这个专题中还需要补充的内容,并在后续的整理中足一补上:原创 2016-08-11 20:31:54 · 9261 阅读 · 34 评论 -
hadoop系列:zookeeper(1)——zookeeper单点和集群安装
8月份的第一周,忙得晕头转向,为了解决OSGI-Felix 下 hibernate JPA的ClassLoader问题,就耽误了至少两天时间,还好在周五系统成功在servicemix上运行了。已经几天时间没有碰博客了,刚好下周有安排给实验室的几个大神讨论zookeeper相关技术。我这么一想,咦~~刚好这周末准备PPT的时候,还不如就预先做几篇关于zookeeper的文章。原创 2015-08-08 23:33:26 · 18846 阅读 · 9 评论 -
架构设计:系统存储(6)——MySQL数据库性能优化(2)
从本文开始我们将讨论建立在块存储方案之上的关系型数据库的性能优化方案和集群方案。关系型数据库的选型将以创业公司、互联网行业使用最广泛的MySQL数据为目标,但是MySQL的安装过程和基本使用方法等知识并不在我们讨论的范围内。后续几篇文章我们首先讨论影响单个MySQL节点性能的主要因素,然后介绍MySQL读写分离、数据表横纵拆分的原理和技术方案。原创 2016-09-18 18:12:11 · 7445 阅读 · 3 评论 -
架构设计:系统存储(4)——块存储方案(4)
目前主流的文件系统包括windows下的NTFS文件系统、Linux下的EXT系列文件系统(管理规则已升级到EXT4)、XFS文件系统和Btrfs文件系统。由于本专题的知识体系全部基于Linux操作系统,所以我们不会对NTFS文件系统做过多介绍。在本文中我们主要介绍两种Linux下的文件系统:EXT系列文件系统。原创 2016-09-07 14:42:42 · 6249 阅读 · 4 评论 -
hadoop系列:zookeeper(3)——zookeeper核心原理(事件)
上一篇文章,我们对zookeeper中的数据组织结构、Leader选举原理进行了讲述。这篇文章我们紧接上文讲解zookeeper中的事件机制。并通过示例代码告诉读者怎么使用zookeeper中的事件通知器:watcher。原创 2015-08-18 20:02:47 · 16173 阅读 · 10 评论 -
架构设计:系统存储(17)——Redis集群方案:高可用
从本篇文章开始,我们将向读者介绍几种Redis的高可用高负载集群方案。除了介绍Redis 3.X版本中推荐的原生集群方案外,还会介绍使用第三方组件搭建Redis集群的方法。本文我们会首先介绍Redis的高可用集群方案。原创 2016-12-20 17:46:51 · 10964 阅读 · 10 评论 -
架构设计:系统存储(18)——Redis集群方案:高性能
从这篇文章开始我们一起来讨论Redis中两种高性能集群方案,并且在讨论过程中将上一篇文章介绍的高可用集群方案结合进去。这两种高性能集群方案是:Twemproxy和Redis自带的Cluster方案。原创 2016-12-31 11:05:39 · 10130 阅读 · 10 评论 -
架构设计:系统存储(28)——分布式文件系统Ceph(挂载)
从本篇文章开始介绍一款现在非常火的分布式文件系统Ceph,包括这款文件系统的安装、基本使用场景、常用管理命令和重要工作原理。特别是讨论了PaxOS算法的基本理后,就更容易理解Ceph分布式文件系统中各种角色的工作原理。原创 2017-04-14 14:00:38 · 8887 阅读 · 1 评论 -
架构设计:系统存储(29)——分布式文件系统Ceph(管理)
从本篇文章开始介绍一款现在非常火的分布式文件系统Ceph,包括这款文件系统的安装、基本使用场景、常用管理命令和重要工作原理。特别是讨论了PaxOS算法的基本理后,就更容易理解Ceph分布式文件系统中各种角色的工作原理。原创 2017-04-22 11:03:34 · 6975 阅读 · 7 评论 -
线程基础:多任务处理(12)——Fork/Join框架(基本使用)
ForkJoinPool由Java大师Doug Lea主持编写,它可以将一个大的任务拆分成多个子任务进行并行处理,最后将子任务结果合并成最后的计算结果,并进行输出。本文中对Fork/Join框架的讲解,基于JDK1.8+中的Fork/Join框架实现,参考的Fork/Join框架主要源代码也基于JDK1.8+。原创 2017-05-14 12:34:14 · 11125 阅读 · 1 评论 -
线程基础:多任务处理(15)——Fork/Join框架(要点2)
Fork/Join Pool采用优良的设计、代码实现和硬件原子操作机制等多种思路保证其执行性能。其中包括(但不限于):计算资源共享、高性能队列、避免伪共享、工作窃取机制等。本文(以及后续文章)试图和读者一起分析JDK1.8中Fork/Join Pool的源代码实现,去理解Fork/Join Pool是怎样工作的。原创 2017-05-31 09:04:19 · 4517 阅读 · 0 评论 -
线程基础:多任务处理(13)——Fork/Join框架(解决排序问题)
之前文章讲解Fork/Join框架的基本使用时,所举的的例子是使用Fork/Join框架完成1-1000的整数累加。这个示例如果只是演示Fork/Join框架的使用,那还行,但这种例子和实际工作中所面对的问题还有一定差距。本篇文章我们使用Fork/Join框架解决一个实际问题,就是高效排序的问题。原创 2017-05-14 12:36:08 · 10838 阅读 · 12 评论 -
线程基础:多任务处理(16)——Fork/Join框架(排序算法性能补充)
本篇文章从单线程快速排序到多线程归并排序、再到多线程桶排序的方式,依次分析它的执行性能。本篇文章并不侧重于算法详细过程的讲解,关于快速排序、桶排序、归并排序等排序算法的详细过程请读者参见其它专门介绍算法过程的资料,当然本文还是会讲解这些排序算法的大致过程。原创 2017-06-06 14:57:26 · 4698 阅读 · 2 评论 -
线程进阶:多任务处理(17)——Java中的锁(Unsafe基础)
本专题在之前的文章中详细介绍了Java中最常使用的一种锁机制——同步锁。但是同步锁肯定是不适合在所有应用场景中使用的。所以从本文开始,笔者将试图通过两到三篇文章的篇幅向读者介绍Java中锁的分类、原理和底层实现。以便大家在实际工作中根据应用场景进行使用。本篇文章我们先介绍Java中关于锁的底层实现的基础类sun.misc.Unsafe。原创 2017-06-14 18:41:06 · 19177 阅读 · 20 评论 -
JVM调试常用命令——jps、(1)
本篇文章根据作者最近一段时间的工作经历和阅读网络资料进而完成的总结。主要对JVM调试过程中使用的命令进行总结,并列举了一个在实际工作中出现的JVM调试场景进行讲解。原创 2018-11-12 21:38:01 · 3474 阅读 · 0 评论 -
JVM调试常用命令——jmap、jstat(2)
本篇文章根据作者最近一段时间的工作经历和阅读网络资料进而完成的总结。主要对JVM调试过程中使用的命令进行总结,并列举了一个在实际工作中出现的JVM调试场景进行讲解。原创 2018-11-19 15:09:17 · 3753 阅读 · 9 评论 -
架构设计:系统存储(27)——分布式文件系统Ceph(安装)
从本篇文章开始介绍一款现在非常火的分布式文件系统Ceph,包括这款文件系统的安装、基本使用场景、常用管理命令和重要工作原理。特别是讨论了PaxOS算法的基本理后,就更容易理解Ceph分布式文件系统中各种角色的工作原理。原创 2017-04-05 13:17:49 · 8380 阅读 · 2 评论 -
架构设计:系统存储(30)——分布式文件系统Ceph(RADOS结构)
从本篇文章开始介绍一款现在非常火的分布式文件系统Ceph,包括这款文件系统的安装、基本使用场景、常用管理命令和重要工作原理。特别是讨论了PaxOS算法的基本理后,就更容易理解Ceph分布式文件系统中各种角色的工作原理。原创 2017-04-29 16:50:47 · 8934 阅读 · 5 评论 -
架构设计:系统存储(23)——数据一致性与Paxos算法(上)
从本文开始,笔者将花三到四篇文章的篇幅,介绍Paxos算法。包括它的理论基础、基本实现、变种实现,其它保证最终一致性的算法,等等。原创 2017-03-13 22:16:50 · 9283 阅读 · 7 评论