Docker swarm mode调研

Docker swarm mode

swarmkit ,docker swarm ,docker swarm mode

  • Swarmkit:这是一个独立的、开源的容器编排项目
  • docker swarm:独立于Docker engine需要额外的KV存储
  • docker swarm mode:集成到了Docker engine中(docker swarm子命令)不需要额外的KV存储支持服务模型(及task概念)以及相应的扩容缩容、服务发现、滚动升级、路由和负载均衡

部署

docker命令地址

主节点1

#初始化,的作为主节点;执行后会打印加入worker节点命令; $ docker swarm init ...

    

kubernete官方部署步骤

Cloud Provider

nodes

  • 虚拟机及物理机都可.
  • 一台机器就可以,推荐还是四个节点来部署不同的角色
  • 主节点从节点没有说明什么严格的区别
  • x86_64架构的机器
  • 10个节点的集群中,etcd与apiserver部署在同一台机器上(1核1G内存)会工作的很好

网络

使用覆盖网络

  • 覆盖网络封装了pod之间的基础网络结构,封装降低了网络性能,性能的好坏取决于各自的环境.

不使用覆盖网络

  • 通过配置底层网络来使交换机,路由器等能够访问podip;这个方案不需要封装覆盖网络,因此性能会更高.

使用kubernetes调用的网络插件

  • kubernetes 支持 CNI (Container Network Interface) 网络插件接口
  • 有一些提供的第三方新插件: -- ...

作为程序员,三大误区

  • 认为程序员的主要工作不需要和人交流,不重视人际交往能力;
  • 认为和写代码不相关的事都不是自己的责任,没有把工作当成自己的生意来对待;
  • 认为有钱是终极目标,只重薪水不重成长;

2016目标

目标

  • 写一个Mvc框架 (使用拦截器将请求拦截,做一系列处理后路由[默认配置,手动配置] , 完成后使用模板技术 渲染页面)
  • 写一个apache服务器
  • 将Mvc框架实现annocation注解方式
  • 模仿monogdb写一个数据库
  • 模仿mybatis写一个持久层
  • 模板语言,写代码生成器
  • maven工程,git学习
  • 微信开发(开发微信插件)
  • 搭建Linux分布式环境(Ngnix+Tomcat+Jdk+Redis)+ docker
  • Android,HTML5开发学习(开发类似微信应用案例)
  • IOS 深入学习(开发类似微信应用案例)

技术积累阶段

  • 搭建一个 mybatis-plus + spring-boot 的快速构建web框架(第三方登录,缓存,性能,认证,数字证书登录) / swagger-API框架
  • ...

MYSQL

和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎。 - 最上层是一些客户端和连接服务 - 第二层架构主要完成大多少的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化及部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如过程、函数等,是否利用索引等,最后生成相应的执行操作。这样在解决大量读操作的环境中能够很好的提升系统的性能 - 存储引擎层,存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API与存储引擎进行通信。不同的存储引擎具有的功能不同,这样我们可以根据自己的实际需要进行选 - 数据存储层,主要是将数据存储在运行于裸设备的文件系统之上,并完成与存储引擎的交互 解决并发问题最有效的方案是引入了锁的机制 notify

死锁:

两个或多个事务在同一资源上相互占用并请求锁定对方占用的资源,从而导致恶性循环的现象。MySQL的部分存储引擎能够检测到死锁的循环依赖并产生相应的错误。InnoDB引擎解决死锁的方案是将持有最少排它锁的事务进行回滚。

MySQL采用插件式的存储引擎架构,可以根据不同的需求为不同的表设置不同的存

InnoDB引擎:

  • 将数据存储在表空间中,表空间由一系列的数据文件组成,由InnoDB管理;
  • 支持每个表的数据和索引存放在单独文件中(innodb_file_per_table);
  • 支持事务,采用MVCC来控制并发,并实现标准的4个事务隔离级别,支持外键;
  • 索引基于聚簇索引建立,对于主键查询有较高性能;
  • 数据文件的平台无关性,支持数据在不同的架构平台移植;
  • 能够通过一些工具支持真正的热备。如XtraBackup等;
  • 内部进行自身优化如采取可预测
  • ...