Kafka入门
背景学习事件总线(EventBus)涉及到MQ的实现,于是想做个基于Kafka的实现,顺便整理基础概念。 EventBusEventBus 是一种事件发布订阅模式,通过 EventBus 我们可以很方便的实现解耦,将事件的发起和事件的处理的很好的分隔开来,很好的实现解耦。 KafkaKafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。它拥有以下三大核心功能: 发布和订阅数据流,类似于传统消息队列(RabbitMQ,RocketMQ)的功能 以容错的方式存储数据流的功能 实时处理数据流的功能 为了支持以上的三大核心功能,Kafka有四个核心的API: The Producer API 允许一个应用程序发布一串流式的数据到一个或者多个Kafka topic。 The Consumer API 允许一个应用程序订阅一个或多个 topic ,并且对发布给他们的流式数据进行处理。 The Streams API...
CentOS磁盘管理
背景因为刚装了台CentOS系统,打算再在系统里面装多台虚拟机,组个k8s集群玩下。机器有两块硬盘,一块250G固态,一块500G机械,系统安装在固态里,机械硬盘拿来当作虚拟机分区。 命令 fdisk 列出指定的外围设备的[分区表]状况 fdisk -l 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647[root@chobon mnt]# fdisk -lWARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.磁盘 /dev/sdb:250.1 GB, 250059350016 字节,488397168 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 4096 字节I/O 大小(最小/最佳):4096 字节 /...
RabbitMQ入门
背景在学习EventBus源码的时候,基于RabbitMQ持久化实现,顺带学习了下RabbitMQ。 RabbitMQ 是一个由erlang语言开发的遵循AMQP(Advanved Message Queue)协议的开源实现。 AMQP协议 是具有现代特征的二进制协议。是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。 应用场景异步处理 上游不关心多下游执行结果,上游执行完发送到MQ,多下游订阅MQ。 应用解耦 数据驱动的任务依赖,多个任务需要轮流执行,轮流订阅上一个任务。 流量削峰 异步返回执行时间长 系统架构核心概念RabbitMQ结构 名词释义Broker 消息队列服务器,接受客户端的连接,实现AMQP实体服务 Connection 连接,应用程序与Broker的网络连接 ConnectionFactory Connection的制造工厂 Exchange 交换机,接收消息,根据路由键转发消息到绑定的队列 Exchange Types 交换机类型,RabbitMQ常用的Exchange Type有...
CentOS修改主机名
进到系统etc目录下 12345678910111213141516Last login: Fri Dec 13 22:02:18 2019 from 192.168.124.19[root@localhost ~]# cd /etc[root@localhost etc]# lsadjtime chkconfig.d dbus-1 favicon.png gshadow issue.net login.defs my.cnf pki rc0.d rsyslog.conf skel sysctl.d xinetd.daliases chrony.conf default filesystems gshadow- kdump.conf ...
CentOS学习KVM笔记-安装篇
前言为了学习docker集群,打算在CentOS里面安装KVM虚拟机来做docker集群 KVMKVM(Kernel-based Virtual Machine, 即内核级虚拟机) 是一个开源的系统虚拟化模块。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。目前KVM已成为学术界的主流VMM之一,它包含一个为处理器提供底层虚拟化 可加载的核心模块kvm.ko(kvm-intel.ko 或 kvm-amd.ko)。kvm还需要一个经过修改的QEMU 软件(qemu-kvm),作为虚拟机上层控制和界面。KVM的虚拟化需要硬件支持(如 Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。 KVM可以运行多个其本身运行未改动的镜像的虚拟机,例如Windows,Mac OS X ,每个虚拟机都有各自的虚拟硬件,比如网卡、硬盘核图形适配器等。 kvm相关依赖包和作用qemu-kvm     主要的KVM程序包python-virtinst   ...
EventBus学习
EventBus介绍EventBus 是一种事件发布订阅模式(观察者模式),通过 EventBus 我们可以很方便的实现解耦,将事件的发起和事件的处理的很好的分隔开来,很好的实现解耦。 微软官方的示例项目 EShopOnContainers 也有在使用 EventBus 。 发布订阅模式 这里的 EventBus 实现也是参考借鉴了微软 eShopOnContainers 项目。 在微服务中运用 EventBus整体架构 结构图 IEventBase : 事件消息定义接口,所有事件消息都继承这个接口,这个接口定义了事件消息唯一Id EventId 和事件消息发生时间 EventAt 。 IEventBase 123456public interface IEventBase{ string EventId { get; } DateTimeOffset EventAt { get; }} IEventHandler : 定义了一个 Handle...
Win10换CentOS7
前言双十一组了台ITX,于是想把闲置的笔记本换成centos7作为服务器 准备工作下载centos镜像打开CentOS官网地址 ,选择aliyun的http://mirrors.aliyun.com/centos/7.7.1908/isos/x86_64/下载网速会好一些,然后选择CentOS-7-x86_64-DVD-1908.iso镜像 制作U盘PE这里选择老牌的PE老毛桃 坑1: [Firmware Bug]: TSC_DEADLINE disabled due to Errata; please update microcode to...
记学习Moq框架(一)
前言Moq(英语发音是Mock-you 或者只是mock)是一个针对.Net开发的模拟库,它从开始就完全充分利用了.NET3.5(LINQ表达式树)和C#3.0的新特性(lambda表达式)。它的目标是让模拟以一种自然的方式与现有单元测试进行集成,使它更加简单、直观,以避免开发人员被迫重写测试或高成本的学习测试框架。这使它成为了一个高生产力、类型安全、重构友好的模拟库。 应用场景现在越来越多分层架构使用依赖注入的方式来解耦层与层之间的关系,最为常见的就是业务层和数据层之间的依赖注入,业务层不再强依赖数据层对象,而是依赖数据层对象的接口,在IOC容器里面完成依赖的配置。这种解耦给单元测试带来了极大的便利,使得对业务逻辑的测试可以脱离对数据层的依赖,单元测试的粒度更小,更容易排查出问题所在。 开始Moq安装MoqMoq安装非常简单,在Nuget里面搜索moq,第一个结果便是moq框架,点击安装即可。 示例 数据层 12345678public interface IProductRepository{ void Add(Product product); ...
记学习Moq框架(二)
记学习Moq框架(一),上一篇简单讲解了用法,这篇深入讲解用法 应用场景示例1234567891011121314public interface IProductService{ void Add(Product product); Task AddAsync(Product product); void Delete(string id); Task DeleteAsync(string id); Product Get(string id); Task<Product> GetAsync(string id);} Mock方法调用单次方法调用1mock.Setup(p => p.Delete(It.IsAny<string>())); 同时也支持异步方法 1mock.Setup(p => p.DeleteAsync(It.IsAny<string>())); 多次方法调用1234mock.SetupSequence(p =>...