【Free Style】基于华为CCE微服务改造的技术实践(一)
本文利用一个现有的node.js web应用从”单例“模式逐步改进为”微服务模式,来介绍微服务和容器在高可靠性,弹性扩展,并行开发部署等方面带来的优势。
首先,介绍一下web app的基本情况:该web app是一个**在线学习体验平台,可以实现多人实时在线体验数据库产品性能。具体功能包含了用户管理,课程学习,产品体验,课程管理。如下图:web app 用例图和框架图
用例图
软件结构示意图
该web app采用node.js编写server端,整个框架采用比较常用的express.js,同时引用了express-session和redis来进行session管理,底层采用mysql数据库和bookshelf.js orm做数据库中间件。基于express.js框架采用ejs template engine来进行server rendering。详细技术栈如下:
然后对web app进行docker镜像制作,主要分为app-image, mysql-image, redis-image。这里主要介绍app image Dockerfile,其他两个镜像均来自官网。
FROM node:alpine
RUN mkdir -p /app
WORKDIR /app
ADD package.json ./
ENV http_proxy 'http://c00406036:********@proxyus3.huawei.com:8080'
ENV https_proxy 'http://c00406036:********@proxyus3.huawei.com:8080'
RUN cd /app && npm install
COPY . ./
CMD ["node", "./bin/www"]
EXPOSE 3000
docker build -t ot-app-1 .
镜像完成后,基于镜像启动容器。详细操作命令如下:MySql启动后,如果需要导入sql文件,执行docker exec -it <container> /bin/sh mysql -uroot -pPassword -e sql
docker run -d -p 6379:6379 --name redis rnd-dockerhub.huawei.com/official/redis:latest
docker run -d -p 3306:3306 --name ot-app-mysql --env="MYSQL_ROOT_PASSWORD=******" mysql
ocker run -d -p 3000:3000 --name ot-web-app --link ot-app-mysql:mysql --link redis:redis ot-app-1
完成的部署图示意图如下:启动容器后,直接可以访问http://<hostname_ip>:3000
- 点赞
- 收藏
- 关注作者
评论(0)