【Free Style】基于华为CCE微服务改造的技术实践(一)

举报
tony_sniper 发表于 2017/11/09 11:13:25 2017/11/09
【摘要】 本文利用一个现有的node.js web应用从”单例“模式逐步改进为”微服务模式,来介绍微服务和容器在高可靠性,弹性扩展,并行开发部署等方面带来的优势。

本文利用一个现有的node.js web应用从”单例“模式逐步改进为”微服务模式,来介绍微服务和容器在高可靠性,弹性扩展,并行开发部署等方面带来的优势。

     

首先,介绍一下web app的基本情况:该web app是一个**在线学习体验平台,可以实现多人实时在线体验数据库产品性能。具体功能包含了用户管理,课程学习,产品体验,课程管理。如下图:web app 用例图和框架图

uc.png

用例图


framework01.PNG

软件结构示意图

 

该web app采用node.js编写server端,整个框架采用比较常用的express.js,同时引用了express-session和redis来进行session管理,底层采用mysql数据库和bookshelf.js orm做数据库中间件。基于express.js框架采用ejs template engine来进行server rendering。详细技术栈如下:

tech-stack.PNG

然后对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


 deploy.png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。