0%

VMware网络模式

桥接模式

相当于独立虚拟的一台电脑,和宿主机为平行关系,和宿主机使用的同一块网卡

Host-only

虚拟机可以访问虚拟机和宿主机,其他的机器都不可以访问,宿主机可以访问虚拟机,使用的是虚拟的net1网卡

NAT

虚拟机可以访问虚拟机、宿主机和外网,但是只有宿主机可以访问虚拟机,使用的虚拟的net8网卡

DockerFile

Dockerfile就像是一个镜像的说明书

  • FROM基础镜像,先下载这个基础类型,然后从这个镜像启动一个容器,并且登陆到容器里面
  • RUN运行一个命令,在容器中运行该命令
  • COPY/ADD将一些文件添加到容器中
  • 设置启动命令ENTRYPOINT,在容器运行的时候作为主程序执行
阅读全文 »

自动执行构建

之前说过进行构建部署的操作,但是总不能每次执行了代码之后都手动的去页面上点立即构建吧,可不可以当代码推送到git上之后就会自动构建呢

自动构建

这里的配置是指五分钟轮询检测一下git仓库是否有变动,如果这段时间有提交的话,会自动进行构建,如果该时间段内没有新的提交,则不会进行构建

jenkins简介

jenkins是持续集成CI的工具,拥有简单安装、开箱即用、易于管理、插件扩展等优点,可以连接代码仓库,从中获取源码并进行自动构建,还可以生成单元测试报告、归档程序包等后续操作

下载及启动

我是在mac电脑上进行操作的,所以就使用mac电脑做的示例(其他可以在https://www.jenkins.io/download/下载)

首先下载jenkins

1
2
3
4
5
#下载最新版本
brew install jenkins-lts

#下载想要的特定版本
brew install jenkins-lts@YOUR_VERSION
阅读全文 »

zookeeper集群结构

zookeeper参考了Paxos协议,设计了Zab协议

Zab协议

zookeeper采用的Zab协议(ZooKeeper Atomic Broadcast,ZooKeeper原子广播协议),Zab协议分为两个阶段:Leader Election领导选举和Atomic Broadcast原子广播

基于Zab协议,zookeeper实现了一种主备模式(Leader、Follower)的系统架构来保持集群中各副本之间的数据一致性,使得zookeeper成为了解决分布式数据一致性问题的解决方案

阅读全文 »

zookeeper理论

会话机制

  • 一个客户端连接一个会话,由zookeeper分配唯一会话id
  • 客户端以特定的时间间隔发送心跳以保持会话有效,超过会话超时时间未收到客户端的心跳,则判断客户端无效(默认2倍tickTime)
  • 会话中请求时FIFO(先进先出原则)的顺序执行
阅读全文 »

微服务

为什么要提出微服务?

原本的单体架构应用是将一整个应用放在webapp下,

  • 将整个应用打成war包,对于开发语言上是由限制的,整个应用只能使用java系列的语言
  • 修改某一个小模块就需要部署整个应用,尤其是特别大的项目,部署一次很麻烦且费时

什么是微服务?

马丁提出微服务架构的概念时列出来了一些对于微服务的描述

  • 根据业务模块划分服务
  • 每个服务可独立部署且相互隔离
  • 通过轻量级API调用
  • 服务需保证良好的高可用性

微服务的缺点

  • 微服务会导致服务增多,且技术复杂
  • 对于运维要求相对提高
  • 查找问题变得更加复杂
  • 存在分布式的各种问题
  • 多个应用存在依赖性

SpringBoot单元测试

springboot中可以使用@SpringBootTest来进行单元测试,其中设置webEnvironment可以来定义运行模式,并在测试用例上使用@RunWith(SpringRunner.class)注解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
enum WebEnvironment {

// 加载WebApplicationContext,并提供一个mock servlet环境,使用该模式内嵌的servlet容器不会启动
MOCK(false),

// 加载EmbeddedWebApplicationContext,并提供一个真实的servlet环境,内嵌servlet容器启动,并监听一个随机端口
RANDOM_PORT(true),

// 加载EmbeddedWebApplicationContext,并提供一个真实的servlet环境,内嵌servlet容器启动,并监听一个定义好的接口
DEFINED_PORT(true),

// 使用SpringApplication加载一个ApplicationContext,但不提供servlet环境
NONE(false);

}

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {

@Autowired
private CustomConfig config;

@Test
public void testProfile() {
System.out.println(config.getName());
}

}

解释器模式

享元模式

使用共享对象可以有效的支持大量的细粒度对象