kubernetes安装过程

背景

由于本人对linux系统很感兴趣,对运维方面的技术也很感兴趣。如今软件部署进入了容器化时代,技术就要跟上时代的步伐。
软件的部署方案大概分为三种阶段:

  • 第一阶段,是在目标机上安装好软件部署所需要的环境,比如说java环境,nginx环境等等,然后再将新版本的软件服务启动起来;
    这个方法导致了一些问题,那便是如果有多台物理主机进行分布式部署,将需要在每台主机上进行同样的操作,虽然可以通过写脚本来尽量避免这种工作,但是依然十分复杂,对于要新增一种软件部署也要进行大量重复工作;
  • 第二阶段,是使用容器技术,比如docker,将新版本的软件打包,然后在目标机器上拉取最新的软件包,并启动;
    这个方法依旧还存在问题,那就是会需要在每台物理主机上都进行拉取软件包并启动的操作,依旧有重复性的工作;
  • 最后,也就是目前比较流行的一种方式,使用kubernetes(简称k8s)集群,这种方法比较简单,在第二阶段的基础上,使用了k8s管理工具,只需要在master节点主机上部署新版本软件包,该工具将会自动在所有子节点上创建新的service,并不需要重复性的工作,这一切都被k8s自动完成了;
    当然k8s并不只有这个功能,还有一些其他非常强大的功能,就不一一细说了。

    Read More

前端微应用深入了解

背景

最近,工作中遇到一个需求:接着上一次微应用开发的项目,产品设计了另一个模块,这个模块的要求是可以单独运行,也可以部署至父应用中作为一个模块使用。有了上一次微应用开发的经验,这次我决定在项目中使用微应用技术接入,该模块功能单独立一个项目。

技术方案

  • 父应用使用qiankun进行微应用的注册和启动;
  • 子应用使用@umi-js/plugin-qiankun进行微应用所需的一些配置进行自动化生成。

    需要解决的问题

描述: 父应用依旧使用vue技术栈,子应用使用umi创建的react项目(react v4.x),采用history路由模式。
上一次遇到的问题主要集中在开发时子应用所需要的配置项,并且子应用不需要安装任何第三方包就可以接入;而本次子应用使用的是umi的plugin,配置方面不需要多做处理,只需要在umi生成的子应用项目的配置文件中加上一个配置项就可以了,点击查看详情

Read More

前端微应用初探

背景

最近,工作中遇到一个问题:手头有两个项目,其中有几个模块界面功能都是一模一样的,所以想着是否可以共用一套代码。
发现有一些解决方案:

  1. 通过iframe嵌套页面;
    缺点:遇到iframe高度控制问题,iframe是不能自适应变更的,所以需要在子应用里进行动态改变iframe的高度(包含各种数据渲染及图片加载完成的监听等),方法比较复杂,代码也会很冗杂;浏览器状态不同步,刷新后iframe状态丢失;
    优点:但是没有跨域问题,样式和js隔离;
  2. 通过qiankun(使用的是single-spa)配置微应用实现:
    缺点:有跨域问题,需要部署在统一的域名下,而且父子应用之间的元素选择器的样式会互相影响;
    优点:好处是父子应用里的代码修改不多,子应用中有相应标识能知道当前是子应用还是说独立访问。

    Read More

微信公众号开发入门

微信公众号开发入门体验

最近这段时间公司启动了一个项目,其中包含了部分微信公众号功能,并且这些功能分配给了我。在这里将微信开发的一些注意的地方记录下来,以供参考。

功能难点

我接到的任务是需要如下功能:

  1. 生成带参数的二维码;
  2. 用户扫描二维码后,向其推送模板消息;
  3. 点击模板消息跳转到指定的url。

    Read More

AngularJS知识点

AngularJS常见问题

本文是在使用AngularJS进行开发工作时发现的一系列需要注意的地方,持续更新。

AngularJS常见错误

  • 在开发中遇见controller不起作用的情况,先检查是否有controller重名的情况。
  • 在Angular表单验证中,必须绑定ng-model之后,formName.inputFieldName.$dirty等值才会定义
  • 在Angular-datatables中,如果renderWith中的html有angular指令,那么需要在dtOptions中添加下面两个options进行重新编译

    Read More

原生javascript发送POST请求

原生javascript发送ajax请求

前段时间发现自己对javascript基础知识掌握不到位,对于原生的js发送请求不是十分了解,便去学习了以下。

开发背景

最近在开发一个展示数据图表的网站,由于网站没有太多的DOM操作,于是并没有使用jQuery库;在网站开发过程中,需要进行数据请求,然而在使用js进行数据请求时,发生了一些错误——由于未将发送的数据进行编码,所以导致服务器接收错误。

Read More

bower&gulp配置详情

前端自动构建工具配置

以下配置均为bower.json中的配置

dependencies & devdependencies

依赖包的版本:
安装特殊的angular作为依赖,又想让其他的依赖angular的包指向改依赖:

1
bower install --save angular=angularjs-ie8-build#1.4.7

以下例子是分别安装其他的angular作为本地angular和固定包的版本的配置:

1
2
3
4
{
"angular": "angularjs-ie8-build#1.4.7",
"angular": "1.4.7"
}

Read More

git reset,checkout,revert使用区别

git常用命令reset, checkout, revert

在平时使用git版本管理中,很多时候会涉及到版本回退,查看旧版本,放弃某一个版本,以及放弃本地修改等的情况,这需要使用git的三个命令:reset, checkout, revert.

commit层面

git resetgit checkout的参数决定了它们的作用域。如果没有包含文件路径,便会在提交层面生效。

reset

在提交层面,git reset将一个分支的末端指向另一个提交。意思就是将该分支回滚,而且不保留回滚目标之后的提交,可以用来移除当前分支的一些提交,例如舍弃branchName分支的最后两个提交:

Read More