<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>中间组件 on 极客老墨</title>
    <link>https://blog.hankmo.com/categories/%E4%B8%AD%E9%97%B4%E7%BB%84%E4%BB%B6/</link>
    <description>Recent content in 中间组件 on 极客老墨</description>
    <generator>Hugo -- 0.138.0</generator>
    <language>zh-cn</language>
    <lastBuildDate>Wed, 11 Mar 2020 16:16:45 +0000</lastBuildDate>
    <atom:link href="https://blog.hankmo.com/categories/%E4%B8%AD%E9%97%B4%E7%BB%84%E4%BB%B6/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Docker时间和系统时间不匹配，相差8小时</title>
      <link>https://blog.hankmo.com/posts/tech/docker-time/</link>
      <pubDate>Wed, 11 Mar 2020 16:16:45 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/docker-time/</guid>
      <description>使用 maven docker 插件部署时，发现docker容器时间与本地时间相差8小时。因为docker的时区与系统时区不同，docker容器默认的时区采用的UTC，而中国时区为CTS，与之差8小时（东8区），可以进入容器使用date命令查看时区：</description>
    </item>
    <item>
      <title>Docker开启监听TCP端口，解决修改docker配置文件无效</title>
      <link>https://blog.hankmo.com/posts/tech/docker-tcp/</link>
      <pubDate>Tue, 18 Feb 2020 16:16:45 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/docker-tcp/</guid>
      <description>Jenkins配置了Docker插件，结果发现不能远程调用远端的docker，原来是tcp端口没有打开。</description>
    </item>
    <item>
      <title>修改docker容器端口映射</title>
      <link>https://blog.hankmo.com/posts/tech/docker-port-update/</link>
      <pubDate>Mon, 20 Jan 2020 16:16:45 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/docker-port-update/</guid>
      <description>在docker run创建并运行容器的时候，可以通过 `-p` 指定端口映射规则。但是，我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改。当docker start运行容器后并没有提供一个-p选项或设置，让你修改指定端口映射规则。那么这种情况我们该怎么处理呢？今天Docker君教你如何修改运行中的docker容器的端口映射？</description>
    </item>
    <item>
      <title>Docker入门系列八——使用Dockerfile构建镜像</title>
      <link>https://blog.hankmo.com/posts/tech/docker-dockerfile/</link>
      <pubDate>Fri, 15 Nov 2019 16:16:45 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/docker-dockerfile/</guid>
      <description>Dockfile就是一个文本文件，里边包含了一行行的指令，用来描述如何创建自定义镜像。使用 `docker build` 命令来基于Dockerfile文件和上下文构建镜像，构建上下文指的是特定路径(PATH或URL)的文件集合，PATH用来指定本地文件系统目录，而URL用来指定Git仓库的地址，它们包含的所有文件(子目录或子模块)都会被递归处理。在大多数情况下，最好以空目录作为上下文，并将Dockerfile保存在该目录中。仅添加构建Dockerfile所需的文件。</description>
    </item>
    <item>
      <title>Docker入门系列七——端口映射与容器互联</title>
      <link>https://blog.hankmo.com/posts/tech/docker-mapping/</link>
      <pubDate>Sun, 15 Sep 2019 16:16:45 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/docker-mapping/</guid>
      <description>如果外部要访问容器，需要将容器的端口开放出来，使用 `-p` 或 `-P` (大写)参数来映射容器端口和宿主机端口的关系。-p：明确指定端口映射，每个端口只能绑定一个容器，格式包括：IP:HOST_PORT:CONTAINER_PORT|IP:CONTAINER_PORT|HOST_PORT:COINTAINER_PORT</description>
    </item>
    <item>
      <title>Mysql binlog格式</title>
      <link>https://blog.hankmo.com/posts/tech/mysql-binlog-format/</link>
      <pubDate>Wed, 28 Aug 2019 17:09:51 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/mysql-binlog-format/</guid>
      <description>Binlog有STATEMENT、ROW、MIXED三种格式，它们各有优缺点，需要根据自身业务需求来进行选择，从5.7.22版本开始，Mysql默认的格式由STATEMENT改为了ROW。</description>
    </item>
    <item>
      <title>Mysql开启Binlog并做数据备份</title>
      <link>https://blog.hankmo.com/posts/tech/mysql-binlog-guide/</link>
      <pubDate>Wed, 28 Aug 2019 16:21:14 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/mysql-binlog-guide/</guid>
      <description>Binlog，即binary log、二进制日志，记录了描述数据库更改的“事件”（EVENT），例如表创建操作或对表数据的更改(DELETE、UPDATE、INSERT)，通俗的说，binlog主要用来记录对mysql数据更新或潜在发生更新的SQL语句(例如DELETE语句没有删除任何行也会记录)，并以”事务”的形式保存在磁盘中Binlog；另外，它还包含有关每个语句获取更新数据的时间长度的信息。</description>
    </item>
    <item>
      <title>Docker入门系列六——数据管理</title>
      <link>https://blog.hankmo.com/posts/tech/docker-volumn/</link>
      <pubDate>Tue, 20 Aug 2019 16:16:45 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/docker-volumn/</guid>
      <description>容器的数据管理有两种方式：数据卷（Data Volumes）：容器内数据直接映射到本地主机环境; 数据卷容器（Data Volume Containers）：使用特定容器维护数据卷。数据卷是一个可供容器使用的特殊目录，将主机的目录映射进容器，类似于Linux中的mount行为。</description>
    </item>
    <item>
      <title>Docker入门系列五——仓库</title>
      <link>https://blog.hankmo.com/posts/tech/docker-repo/</link>
      <pubDate>Mon, 12 Aug 2019 16:16:45 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/docker-repo/</guid>
      <description>镜像注册表，用来存储镜像数据的地方，官方的Docker hub就是一个公共的Registry，另外，还可以通过官方的registry镜像搭建私有的镜像注册表。通常所说的镜像仓库是泛指Registry，但并不完全准确，一个Registry可以包含多个Repository。例如，拉取镜像：docker pull registry.hub.docker.com/ubuntu:18.04，这里的registry.hub.docker.com就是官方提供的镜像注册表，可以省略不写。</description>
    </item>
    <item>
      <title>Docker入门系列四——容器</title>
      <link>https://blog.hankmo.com/posts/tech/docker-container/</link>
      <pubDate>Mon, 29 Jul 2019 16:16:45 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/docker-container/</guid>
      <description>容器是镜像的可运行实例。您可以使用Docker API或CLI创建，启动，停止，移动或删除容器。您可以将容器连接到一个或多个网络，附加存储，甚至可以根据其当前状态创建新镜像。默认情况下，容器与其他容器及其主机相对隔离。您可以控制容器的网络，存储或其他基础子系统与其他容器或主机的隔离程度。容器由其镜像以及在创建或启动时为其提供的配置选项定义。删除容器后，其未持久存储的状态数据都将消失。</description>
    </item>
    <item>
      <title>Docker入门系列三——镜像</title>
      <link>https://blog.hankmo.com/posts/tech/docker-image/</link>
      <pubDate>Tue, 23 Jul 2019 16:15:25 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/docker-image/</guid>
      <description>镜像技术是docker轻量和高效的核心，由于镜像的层层叠加结构，多容器共享镜像层，而容器本身只创建本身的容器层，极大的提高了资源利用率。一般而言，镜像基于其他镜像构建，但是镜像树底层的根镜像也可能没有依赖其他父镜像。Docker镜像(Image)，一个镜像是一个只读的用于创建docker容器(container)的指令模板，包括了程序运行所需的全部依赖包（包括程序、库、资源、配置等）。通常，镜像基于另一个镜像，并进行自定义。镜像是只读的、可运行的，运行后的镜像即为容器（Container）。</description>
    </item>
    <item>
      <title>Docker入门系列二——安装</title>
      <link>https://blog.hankmo.com/posts/tech/docker-install/</link>
      <pubDate>Fri, 12 Jul 2019 16:07:37 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/docker-install/</guid>
      <description>Docker是基于Linux系统的cgroup技术实现的，既然如此，那么Docker是否支持非Linux系统上使用呢？答案是肯定的。Docker官方提供了Docker Machine工具，用于在非Linux系统上构建虚拟机并在其上安装Docker；Docker官方还提供了Docker Toolbox工具包，用来在旧版本的操作系统上安装Docker；另外，Docker还专门针对Windows和Mac OS，提供了更简单易用的Docker Desktop，用来一键安装Docker及其相关组件。</description>
    </item>
    <item>
      <title>Docker入门系列一——简介</title>
      <link>https://blog.hankmo.com/posts/tech/docker-intro/</link>
      <pubDate>Wed, 03 Jul 2019 16:05:24 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/docker-intro/</guid>
      <description>容器化技术，是对Linux容器的一种封装，将程序打包为镜像文件，运行该文件创建容器，最终达到使用容器进行快速、简单、高效的开发、部署、运行软件程序的目的。相对于虚拟化技术，容器化技术有着更高的资源利用率、更高的性能、更低的开发和维护成本。</description>
    </item>
    <item>
      <title>RabbitMQ服务器管理（二）——权限管理</title>
      <link>https://blog.hankmo.com/posts/tech/rabbitmq-permission/</link>
      <pubDate>Thu, 12 Apr 2018 12:31:32 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/rabbitmq-permission/</guid>
      <description>RabbitMQ有一套独立的权限机制：配置、写、读，通过三个正则表达式来分别匹配所访问资源的这三项权限。权限的设置需要使用rabbitmqctl控制台工具来输入命令完成，基本思路是：创建虚拟机、创建用户，然后给用户授予权限。rabbitmq还支持为topic交换器设置消息权限，该权限基于消息的routing key，通过正则匹配消息的routing key来控制具体消息的发布和消费。</description>
    </item>
    <item>
      <title>RabbitMQ服务器管理（一）——ubuntu上安装MQ</title>
      <link>https://blog.hankmo.com/posts/tech/rabbitmq-ubuntu-install/</link>
      <pubDate>Thu, 12 Apr 2018 11:31:04 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/rabbitmq-ubuntu-install/</guid>
      <description>我们将在ubuntu上安装RabbitMQ，其他操作系统类似。RabbitMQ使用Erlang语言开发，需要先安装Erlang语言，erlang的安装涉及许多依赖包，不过官方已经提供了ubuntu库地址文件和依赖安装完整包，只需在ubuntu原地址列表加入官方地址并更新即可。安装完成，还涉及服务器启动、停止和状态检查，以及权限控制。</description>
    </item>
    <item>
      <title>RabbitMQ基础（七）——虚拟主机vhost</title>
      <link>https://blog.hankmo.com/posts/tech/rabbitmq-vhost/</link>
      <pubDate>Wed, 04 Apr 2018 15:46:21 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/rabbitmq-vhost/</guid>
      <description>虚拟主机是RabbitMQ的逻辑单元，有用单独的连接、队列、交换器、绑定等等信息，多个虚拟主机相互隔离、互不影响。这解决了RabbitMQ数据量庞大时的各种管理问题，可以按照业务模块分别建立不同的虚拟主机，单独为独立的业务功能服务，而不会产生诸如命名冲突等问题。</description>
    </item>
    <item>
      <title>RabbitMQ基础（六）——实现RPC</title>
      <link>https://blog.hankmo.com/posts/tech/rabbitmq-rpc/</link>
      <pubDate>Wed, 28 Mar 2018 16:18:06 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/rabbitmq-rpc/</guid>
      <description>本章简单介绍了如何使用RabbitMQ来实现RPC，关键是使用AMQP.BasicProperties定义的消息属性。1、AMQP0-9-1预定了14中消息属性，不过常用的只有几种，在java中通过AMQP.BasicProperties访问和设置；2、客户端通过消息属性的replyTo属性来设置回调队列，服务端获取并将响应消息发送到回调队列；3、客户端请求和响应的对应关系需要通过比对correlationId来实现。</description>
    </item>
    <item>
      <title>RabbitMQ基础（五）——topic交换器</title>
      <link>https://blog.hankmo.com/posts/tech/rabbitmq-topic-exchange/</link>
      <pubDate>Fri, 23 Mar 2018 16:45:21 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/rabbitmq-topic-exchange/</guid>
      <description>Topic类型的交换器，支持使用&amp;#34;*&amp;#34;和&amp;#34;#&amp;#34;通配符定义模糊bindingKey，然后按照条件进行模糊匹配。bindingKey的定义需要遵循一定的规则，长度不能超过255字节。</description>
    </item>
    <item>
      <title>RabbitMQ基础（四）——direct交换器与路由</title>
      <link>https://blog.hankmo.com/posts/tech/rabbitmq-direct-exchange/</link>
      <pubDate>Fri, 23 Mar 2018 15:28:23 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/rabbitmq-direct-exchange/</guid>
      <description>绑定队列时，可以设置bindingKey，发送消息时可以设置消息的routingKey;direct交换器，按照消息的routingKey和bindingKey进行精确匹配，完全相同才会进行转发；相同的key可以与多个队列进行绑定，每个队列都可以收到与key匹配的消息，这称为多重绑定。在本篇，我们简单了解了direct类型的交换器，它适用于需要精确匹配并转发消息的场景；在下一篇，我们将会了解topic类型的交换器，以及其作用及适用场景。</description>
    </item>
    <item>
      <title>RabbitMQ基础（三）——fanout交换器和发布/订阅</title>
      <link>https://blog.hankmo.com/posts/tech/rabbitmq-fanout-exchange/</link>
      <pubDate>Thu, 22 Mar 2018 17:03:05 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/rabbitmq-fanout-exchange/</guid>
      <description>交换器，即Exchange，交换器是消息到达的第一站，所有的消息都先发送给交换器，交换器再按照不同的规则进行消息分发。RabbitMQ中的消息传递模型的核心思想是，生产者不会直接向队列发送任何消息。实际上，生产者甚至不知道消息是否会被传递到任何队列。相反，生产者只能发送消息给交换器。交换器做的事情非常简单：一方面，它接收来自生产者的消息，另一边则将消息推送到队列中。交换器分发规则是由交换类型(exchange type)定义的。</description>
    </item>
    <item>
      <title>MySQL中批量插入和批量更新</title>
      <link>https://blog.hankmo.com/posts/tech/mysql-batch-insert-update/</link>
      <pubDate>Tue, 27 Feb 2018 19:22:14 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/mysql-batch-insert-update/</guid>
      <description>大批量同步数据到MySQL中，涉及到更新和新增数据，如果仅仅循环一次次插入，不仅耗费过多的网络开销，性能低下，而且频繁的获取数据库连接、操作数据库，增加数据库压力，甚至严重影响数据库性能。因此，此时我们需要批量操作，来减轻数据库压力，提升应用性能。</description>
    </item>
    <item>
      <title>RabbitMQ基础（二）——工作队列Work Queues</title>
      <link>https://blog.hankmo.com/posts/tech/rabbitmq-queue/</link>
      <pubDate>Wed, 24 Jan 2018 15:24:29 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/rabbitmq-queue/</guid>
      <description>Work Queues，称为工作队列(也称Task Queues，任务队列)，其主旨在于避免立即执行资源密集型任务，并且必须等待它完成。相反，我们把任务安排在后来执行。对此，我们将任务封装为消息并将其发送到队列中。在后台运行的工作进程会获取任务并最终执行任务。当你运行许多工作进程时，任务将在他们之间共享。</description>
    </item>
    <item>
      <title>RabbitMQ基础（一）——基本概念和HelloWorld</title>
      <link>https://blog.hankmo.com/posts/tech/rabbitmq-intro/</link>
      <pubDate>Thu, 18 Jan 2018 17:52:28 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/rabbitmq-intro/</guid>
      <description>RabbitMQ是一个消息代理，是一个erlang开发的AMQP（Advanced Message Queue ）的开源实现。RabbitMQ是轻量级的，易于部署在premises和云中。它支持多种消息传递协议。RabbitMQ可以部署在分布式和联合配置中，以满足高级别、高可用性需求。其主要思想非常简单:它接受并转发消息。你可以把它想象成邮局:当你把邮件寄到邮箱时，你很确定邮差先生最终会把邮件寄给你的收件人。使用这个比喻，RabbitMQ是一个邮筒，一个邮局和一个邮差。</description>
    </item>
    <item>
      <title>MySQL慢查询分析</title>
      <link>https://blog.hankmo.com/posts/tech/mysql-slow-query-analysis/</link>
      <pubDate>Tue, 04 Apr 2017 16:31:00 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/mysql-slow-query-analysis/</guid>
      <description>最近开发微信红包活动，并发量大概在100左右，数据库存储数据几十万条。活动上线后，遇到一个问题，服务启动起来后，在几分钟之内，服务变得很慢，通过分析tcp状态（ss -s）发现，处于timewait状态的TCP达到一千多个，然后从应用前台、后台到数据库逐步分析，最后发现，由于某一张表的数据量达到几十万，而某一个逻辑需要连接该表进行数据查询，导致SQL执行非常缓慢。于是整理下SQL慢查询分析的相关方法，以便查阅。</description>
    </item>
  </channel>
</rss>
