目录

Life in Flow

知不知,尚矣;不知知,病矣。
不知不知,殆矣。

构建私有镜像仓库

私有镜像仓库 开通镜像服务 登录阿里云开通容器镜像服务。点击管理控制台-》初次使用会提示开通,然后设置密码。 点击管理 # 登录阿里云Docker Registry docker login --username=soulboy1990116 registry.cn-shanghai.aliyuncs.com # 从Registry中拉取镜像(拉取) [root@localhost ~]# docker pull registry.cn-shanghai.aliyuncs.com/abc1024/soulboy_images:flask-hello-world flask-hello-world: Pulling from abc1024/soulboy_images [root@localhost ~]# docker run -d -p 5000:5000 registry.cn-shanghai.aliyuncs.com/abc1024/soulboy_images:flask-hello-world Digest: sha256:8c4f6441a730d5abff5838....

Linux Network Namespace

Linux namespace 的概念  Linux 内核从版本 2.4.19 开始陆续引入了 namespace 的概念。其目的是将某个特定的全局系统资源(global system resource)通过抽象方法使得namespace 中的进程看起来拥有它们自己的隔离的全局系统资源实例(The purpose of each namespace is to wrap a particular global system resource in an abstraction that makes it appear to the processes within the namespace that they have their own isolated instance of the global resource. )。Linux 内核中实现了六种 namespace,按照引入的先后顺序,列表如下: namespace 引入的相关内核版本 被隔离的全局系统资源 在容器语境下的隔离效果 Mount namespaces Linux 2.4.19 ....

容器与镜像

Docke Architecture Docker客户端  Docker Client的主要目的是提供一种方法来指导从注册中心里提取镜像并使其在Docker主机上运行。 DockerHost  Docker主机提供了一个完整的环境来执行和运行应用程序。它包括Docker守护程序,镜像,容器,网络和存储。如前所述,守护进程负责所有与容器相关的操作,并通过CLI或REST API接收命令。它还可以与其他守护进程通信,以管理其服务。Docker守护程序根据客户端的请求提取和构建容器镜像。一旦它提取了请求的镜像,它就会利用一组称为构建文件的指令为容器构建一个工作模型。构建文件还可以包括守护程序在运行容器之前预加载其他组件的指令,或者在构建容器之后将指令发送到本地命令行的指令。 Docker对象  各种对象用于组装应用,docker的主要对象如下: Images:用于构建容器的只读二进制模版,可以通过私有或公共注册中心获取。 Containers:容器是运行应用程序的封装环境。容器由映像和启动容器时提供的任何其他配置选项定义,包括但不限于网络连接和存储选项。容器只能访问映像中定义的资源,除非....

Bus

Bus 简介  Spring Cloud Bus(消息总线)通过一个轻量级的消息中间件可以连接分布式系统中的各个节点。可以使用该总线来广播某些状态的改变(比如配置信息发生变更)或其他管理指令,以下是 Bus 适用的场景: 一个事件,需要广播或者单独传递给某个接口。 配置更新了,但是其他系统不知道是否更新。  SpringCloud 默认使用 RabbitMQ 作为消息队列组件。 分布式配置中心 Config 结合 Bus 部署 MQ 服务 这里基于 Docker 部署 RabbitMQ docker pull rabbitmq:management #拉取镜像 docker run -d --hostname rabbit-host --name="myrabbitmq" -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 5672:5672 -p 15672:15672 rabbitmq:3-management 访问控制台 http://192.168.31.210:15672/ config-c....

Config

配置中心的由来  分布式系统中往往部署在 N 服务器上,逐一管理维护成本很高,所以配置中心应运而生。配置中心被用作集中管理不同环境(Dev、Test、Stage、Prod)和不同集群配置,以及在修改配置后将实时动态推送到应用上进行刷新。 #配置中心应具备的功能 OpenAPI 业务无关性 配置生效监控 一致性 K-V 存储 统一配置实时推送 配合灰度与更新 配置全局恢复、备份与历史 高可用集群 Spring Cloud Config  Spring Cloud Config 是一个集中化外部配置的分布式系统,由服务端和客户端组成。它不依赖于注册中心,是一个独立的配置中心。 支持多种存储配置信息的形式:JDBC、Vault、Native、SVN、Git。 Git 版工作原理 客户端启动时候向 ConfigServer 发起请求 ConfigServer 接收服务端请求后,根据配置的仓库地址,将 Git 上的文件克隆到本地的一个临时目录中(此目录是一个 Git 的本地仓库目录)。 然后 ConfigServer 再读取本地文件返回给客户端(优点:Git 服务器网络故障,依然可以使....

Sleuth

全链路监控  微服务架构下,服务按照不同的维度进行拆分,一次请求可能会涉及多个服务,并且可能由不同的团队开发,使用不同的编程语言,可能部署在几千个节点上,横跨多个不同的数据中心。因此,就需要一些可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题。  APM(Application Performance Management),其中最出名的是谷歌公开的论文提到的 Dapper。Dapper 论文中对实现一个分布式跟踪系统提出了如下需求: 性能低损耗:分布式跟踪系统对服务的性能损耗应该尽可能做到可以忽略不计,尤其是对性能敏感的应用不能产生损耗。 对应用透明:即要求尽可能用非侵入的方式来实现跟踪,尽可能做到业务代码的低侵入,对业务开发人员应该做到透明化。 可伸缩性:是指不能随着微服务和集群规模的扩大而使分布式跟踪系统瘫痪。 跟踪数据可视化和迅速反馈:即要有可视化的监控界面,从跟踪数据收集、处理到结果的展现尽量做到快速,这样就可以对系统的异常状况作出快速反应。 持续监控:即要求分布式跟踪系统必须是 7 *24 小时工作的,佛足额将难以定位到系统偶尔抖动....

Zuul

诞生背景  微服务架构将后端拆解成许多个单独的应用:看似清晰的服务拆分,实则杂乱无章,完成一个业务逻辑,需要到不同主机和不同端口上面调取接口。于是一个面向服务治理、服务编排的㢟出现了——微服务网关。  Zuul 是从设备和网站到后端应用程序所有请求的前门,为内部服务提供可配置的对外 URL 到服务的映射关系,基于 JVM 的后端路由器,其具备以下功能: 统一接入:智能路由、AB 测试、灰度测试、负载均衡、容灾处理、日志埋点 流量监控:限流处理、服务降级 安全防护:鉴权处理、监控、机器网络隔离  虽然 Zuul2.x 采用 Netty 有较大的性能提升,单改动较大,考虑到稳定性 Spring Cloud Finchley 继续沿用 Netflix Zuul 1.x 版本,另外由于 Spring Cloud Gateway 已经孵化成功,相较于 Zuul 在功能以及性能上都有明显提升,Pivotal 公司正在走一条“去 Netflix 化”的路线。 主流开源网关概览 入门案例 Maven 依赖 <dependency> <groupId>org.spring....