Docker Compose概述
Compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,通过YAML文件来配置应用程序的服务。然后,使用单个命令,可以从配置中创建并启动所有服务。通俗一点就是你通过配置YAML文件,你可以同时构建和启动多个Docker容器,而且不必一个个的启动,通过编排,将所有依赖的Docker一个命令全启动。
Compose适用于所有环境:生产,登台,开发,测试以及CI工作流程。
Compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,通过YAML文件来配置应用程序的服务。然后,使用单个命令,可以从配置中创建并启动所有服务。通俗一点就是你通过配置YAML文件,你可以同时构建和启动多个Docker容器,而且不必一个个的启动,通过编排,将所有依赖的Docker一个命令全启动。
Compose适用于所有环境:生产,登台,开发,测试以及CI工作流程。
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。
上篇博客讲了如何集成gitalk,如果你还不会集成gitalk 点击这里 快去集成你的gitalk吧,上次我们还有一个问题没有解决,那就是每次发文之后,需要手动的去初始化gitalk,就去抓了一下gitalk初始化发送的网络请求,自己写一个脚本来实现自动初始化,你也可以嵌到你的博客系统里,每次发新的文章都自动进行初始化,下面我们来看,如何实现。
由于之前的评论是自己写的一个,之后发现gitalk就体验了一把,果断换成gitalk
Gitalk 是一个基于 Github Issue 和 Preact 开发的评论插件。使用 Github 帐号登录,界面干净整洁,最喜欢的一点是支持 MarkDown语法
在分布式事务中,通常有两种方式保持事务的一致性。
一种是通过MQ发送和接受消息来通知下一步的操作。
一种是通过上游执行完之后,将状态保存到外部存储中,系统定时扫描根据状态来决定下游的操作。
两种方法有利有弊,第一种如果消费失败,消息就没了,第二种频繁的扫描,对系统的性能是个影响,并且百分之九十是在做无用功。如果存在外部数据库中,性能也是个瓶颈。
在众多的MQ产品中,貌似只有rocketMQ是提供支持的。
RocketMQ在 V3.1.5 开始,使用 数据库 实现【事务状态】的存储。但未开源,因为rocketmq阉割了对生产者的LocalTransactionState状态的回查机制,所以增加了生产端事务的复杂度。本来由RocketMQ中间件通过回查机制来让生产者知道事务信息发送成功,现在要生产者自己来确认。
服务网关是微服务架构中一个不可或缺的部分。通过服务网关统一向外系统提供REST API的过程中,除了具备服务路由、均衡负载功能之外,它还具备了权限控制等功能。Spring Cloud Netflix中的Zuul就担任了这样的一个角色,为微服务架构提供了前门保护的作用,同时将权限控制这些较重的非业务逻辑内容迁移到服务路由层面,使得服务集群主体能够具备更高的可复用性和可测试性。
在Spring Cloud体系中, Spring Cloud Zuul就是提供负载均衡、反向代理、权限认证的一个API gateway。是微服务架构的不可或缺的一部分,提供动态路由,监控,弹性,安全等的边缘服务。Zuul是Netflix出品的一个基于JVM路由和服务端的负载均衡器。
Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。使用Config Server,您可以在所有环境中管理应用程序的外部属性。客户端和服务器上的概念映射与Spring Environment和PropertySource抽象相同,因此它们与Spring应用程序非常契合,但可以与任何以任何语言运行的应用程序一起使用。随着应用程序通过从开发人员到测试和生产的部署流程,您可以管理这些环境之间的配置,并确定应用程序具有迁移时需要运行的一切。服务器存储后端的默认实现使用git,因此它轻松支持标签版本的配置环境,以及可以访问用于管理内容的各种工具。可以轻松添加替代实现,并使用Spring配置将其插入。
就是分为客户端和服务端,服务端将配置文件发布成REST接口,客户端负责从服务端REST接口中获取配置。
Netflix的创造了一个调用的库Hystrix实现了断路器图案。在微服务架构中,通常有多层服务调用。
断路器就比如家里面的保险丝,一但出现故障,就自动断开,避免造成火灾啥的。
微服务图
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式环境中运行良好,包括开发人员自己的笔记本电脑,裸机数据中心,以及Cloud Foundry等托管平台。
Spring Cloud专注于提供良好的开箱即用经验的典型用例和可扩展性机制覆盖。
分布式/版本化配置
服务注册和发现
路由
service to service调用
负载均衡
断路器
分布式消息传递
是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。事务是数据库运行中的逻辑工作单位,由DBMS中的事务管理子系统负责事务的处理。