0%

自动执行构建

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

自动构建

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

zookeeper集群结构

zookeeper参考Paxos协议,设计了Zab协议,其使用Zab协议来实现分布式数据一致性

Zookeeper使用一个单一主进程来接收并处理客户端的所有事务请求,即写请求。当服务器数据的状态发生变更后,集群采用Zab原子广播协议,以事务提案Proposal的形式广播到所有的副本进程上,其保证一个全局的变更序列,即可以为每个事务分配一个全局递增的xid

Zab协议

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

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

阅读全文 »

微服务

为什么要提出微服务?

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

  • 将整个应用打成war包,对于开发语言上是有限制的,整个应用只能使用java系列的语言,而微服务技术栈不受限,不同的服务可以使用不同的技术栈
  • 修改某一个小模块就需要部署整个应用,尤其是特别大的项目,部署一次很麻烦且费时,而微服务架构中每个服务都是一个独立的业务单元,服务与服务之间是独立的

什么是微服务?

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

微服务是一种架构模式

  • 将单一应用分成一组小服务,根据业务模块划分服务
  • 每个服务可独立部署且相互隔离
  • 通过轻量级API调用(如HTTP调用)
  • 服务需保证良好的高可用性

既然要拆分,到底如何拆分服务呢,首先要遵守两个基本前提

  • 业务独立性 保证每个微服务是具有业务独立性的单元
  • 团队自主性 每个团队成员不超过十个人

微服务的优点

  • 易于开发和维护
  • 启动较快
  • 局部修改容易部署
  • 复杂的系统可以使用不同的语言进行开发,语言无关、平台无关,可以选择更适合的语言、工具或者平台来开发服务本身
  • 可以按需伸缩

微服务的缺点

  • 微服务会导致服务增多,且技术复杂
  • 对于运维要求相对提高
  • 查找问题变得更加复杂
  • 存在分布式的各种问题,如数据一致性问题
  • 多个应用存在依赖性,接口调整成本高,修改一个微服务的API可能所有涉及到的微服务都要修改
  • 重复代码,很多服务可能会使用相同的功能,可能需要各个服务都要开发这一功能

对于微服务之间的进程间调用,能访问一次就不要访问多次,尽量的粗粒度的返回更多的东西;而对于进程间的调用,是细粒度的

与SOA的区别

  • SOA是企业级的,自顶向下开展实施;微服务是团队级的,自底向上开展实施
  • SOA服务是由多个子系统组成,粒度大;微服务一个系统拆分为多个服务,粒度小
  • SOA服务之间使用企业服务总线来进行交互的集中式的服务架构;微服务是无集中式总线,松散的服务架构
  • SOA是单体架构系统,相互依赖,部署复杂;微服务可以独立部署

是否使用微服务

  • 看业务规模,单体应用太大不好维护时

jenkins构建

配置

配置全局工具

进入全局工具配置

配置-全局工具配置入口

配置maven、jdk、git等,根据自己的需要进行配置

插件管理

然后进入插件管理

配置-插件管理入口

由于我使用的Gitee做的源代码管理,所以我需要下载一下Gitee的插件

  • 前往 Manage Jenkins -> Manage Plugins -> Available
  • 右侧 Filter 输入: Gitee
  • 勾选下载即可

系统配置

接下里就要配置gitee地址了

配置-系统配置

  1. 前往 Jenkins -> Manage Jenkins -> Configure System -> Gitee Configuration -> Gitee connections

  2. Connection name 中输入 Gitee 或者你想要的名字

  3. Gitee host URL 中输入 Gitee 完整 URL地址: https://gitee.com (Gitee 私有化客户输入部署的域名)

  4. Credentials 中如还未配置 Gitee APIV5 私人令牌,点击

Add 选择Jenkins

  1. Domain 选择 Global credentials
  2. Kind 选择 Gitee API Token
  3. Scope 选择你需要的范围
  4. Gitee API Token 输入你的 Gitee 私人令牌,获取地址:https://gitee.com/profile/personal_access_tokens
  5. ID, Descripiton 中输入你想要的 ID 和描述即可。
  6. Credentials 选择配置好的 Gitee APIV5 Token
  7. 点击 Advanced ,可配置是否忽略 SSL 错误(视您的Jenkins环境是否支持),并可设置链接测超时时间(视您的网络环境而定)
  8. 点击 Test Connection 测试链接是否成功,如失败请检查以上 3,5,6 步骤。

构建

接下来就是构建新的项目了

构建-入口

之后就是配置源代码地址以及构建步骤了

配置源码管理

构建-源码管理

配置构建步骤

这里我用的是maven,所以构建的时候选择的是maven,选择之前配置好的maven,然后目标为clean install

构建-构建配置

配置完之后保存即可

构建

找到配置好的项目,进行构建

构建-开始构建

构建的时候可以查看构建日志

点击构建的项目序号

构建

点控制台输出就可以看到构建的日志了

构建-控制台输出

构建完成之后可以看到工作空间中会有构建完成的项目

构建-工作空间

此时就可以拿到war包了,拿到war包之后就可以开始进行构建后的操作了,下一步就是部署

部署

部署有些使用的是war包,有的使用的是jar包

war包部署

部署war包这里还需要去下载一个插件

部署-插件

回到项目的配置中,增加构建后操作步骤

部署-构建后操作

然后开始进行配置

部署-部署配置

在这里注意一下,由于这里需要配置tomcat的权限,在tomcat的tomcat-users.xml中进行配置一下用户和角色

1
2
3
4
5
6
<!-- jenkins使用 -->
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="jenkins_user" password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status"/>

配置完成之后启动tomcat即可

jar包部署

在增加构建后操作步骤中选择归档成品,选择需要存档的文件,我这里使用的是**/target/*.jar

jar包归档

这样执行构建后会生成存档文件

归档文件

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
阅读全文 »