叶苇的简历

联系方式

个人信息

  • 叶苇/男/1997
  • 本科/广东工业大学光电信息科学与工程
  • 工作年限:公司实习11个月
  • 技术博客:https://blog.ywandy.top
  • Github:https://github.com/ywandy
  • 期望职位:运维开发工程师、后端开发工程师、区块链开发工程师
  • 期望城市:广州

工作经历

盈盛智创(广州)有限公司 ( 2018年4月 ~ 2019年7月 )

运维项目

在这个公司,我作为运维和网络工程师,主要负责公司的服务器和网络运维的项目,负责的项目有以下:

  1. docker swarm集群的搭建和应用落地:

    主要负责docker的容器编排技术的实现和落地,负责把同事们编写的微服务和其他的组件封装成docker,并且通过容器编排技术交付给目标客户,在这项目中,主要是实践了自己的容器编排技术在企业项目中的应用,同时,多个容器编排维护让我对容器编排有了更深入的理解。遇到的最困难的地方在于swam集群中分布式存储格局的问题,尝试了很多分布式共享文件系统,例如ceph,nfs,glusterfs,rexray/s3fs,但是至今没找到一个比较满意的实现,不过这个困惑应该在我掌握了k8s后会解决

    使用容器编排技术部署过的企业应用落地项目:

    • 3个spring boot应用组成微服务(java)+2个人工智能后端(python+java)+前端(nodejs)+数据库(mysql)+缓存(redis):
    • 2组织4节点的基于kafka共识机制的基于Hyperledger fabric区块链系统
  2. 集群部署:

    • elasticsearch(3节点1主2数据)+logstash+kibana+head集群搭建和维护:
      • 主要负责节点健康状态维护
      • es节点的数据迁移
    • Hyperledger Fabric 区块链集群部署和维护:
      • 主要负责节点的日志排错
      • 对不同链码的区块链环境做不同优化
    • Rabbitmq 集群部署(3节点),后期维护队列:
      • 前置haproxy ,后面有3个rabbitmq
    • kafka+zookeeper(3个zookeeper集群+4个kafka节点):
      • 主要用于区块链,对kafka和zookeeper没有很大研究,只是搭建了一个集群用于Farbic区块链的kafka共识机制使用,初步知道fabric是把kafka当作消息队列使用,用队列对 区块链的交易进行打时间戳
  3. Nginx:

    • 部署ssl证书和域名
    • Nginx反向代理、负载均衡、缓存、URL重写及读写分离
    • 使用nginx部署过前后端分离应用程序(java + vuejs)
    • 会看nginx 的log解决相应问题(例如文件无法上传,上传超时等问题)
  4. mysql:

    • 基础的数据库管理语句

    • 主从复制(异步或者半同步)

    • mysql-proxy实现读写分离
  5. shell脚本:

    • 一般的shell 流程控制
    • shell 脚本制作各类一键安装脚本

    • awk或者sed做配置文件的字符串替换

  6. 邮件系统iredmail bundle的部署、运维、解决问题:

    熟悉iredmail在生产中遇到的问题,能解决邮件系统部署后无法发送邮件或者 被拒信问题,有postfix配置的遇到问题排错的经验

  7. linux 容器技术lxc:

    有lxc 容器技术的经验,会部署和配置lxd,并且能解决lxd产生的bug

  8. 公司服务器的环境安装和搭建以及网关等全部公司网络设施的调试和配置:

区块链项目

在这个公司期间,我也负责区块链小组的开发,主要负责区块链运维方面的开发,运维开发方面开发包括区块链的基础网络搭建和容器编排(docker swarm和docker-compsoer都有用到),区块链快速部署框架编写(shell脚本),框架的中间件和其他附属组件开发(主要用golang),同时在这个项目有链码的编写经验(Hyperledger Composer链码)

  1. 区块链部署脚本执行器开发(区块链运维开发)

    master-worker架构,部署在目标机器,提供restful服务给其他应用程序调用,允许上传区块链的部署程序,然后在当前worker的机器上面执行区块链的部署,实现远程自动部署到目标机器。采用golang编写,数据固化采用mongodb实现,对外的http restful api采用go-gin框架。能实现脚本的有效状态管理,脚本的stdout和stderr管理,以及区块链部署生命周期管理(区块链部署,停止,重新部署)

  2. Rabbitmq 的队列中间件开发(区块链运维开发)

    一个对外提供restful api的中间件,主要功能是其他用户只需要把消息发送到这个中间件,然后中间件会把消息推送到相应的Rabbitmq 的 exchange,这个中间件目的在于使其他服务不需要了解rabbitmq的使用,只需要调用这个程序的restful api即可完成消息推送到Rabbitmq。

    在这个项目,主要改进了一个网上面参考过的channel池,由于原作者的channel池会导致循环重连,和目前我的项目需求不匹配,因此我修改了很多关于重连和消息重发的逻辑,用于适配项目需求,还可以有进一步改进的地方,就是目前只是实现了channel池,是一条连接对应多个channel链接,进一步能使用多个连接对应多个channel,实现连接池功能,提高服务的高可用

  3. scrapy+mongodb实现分类号爬虫

    • 使用python 的scrapy框架进行深度优先爬虫
    • 爬取专利分类号页面的爬虫
    • 采用中间件对爬取错误的链接保存到mongodb
    • 采用pipeline对爬取数据经过清洗后存进mongodb对应的表
  4. scrapy+nodejs+mongodb实现专利接口爬取:

    • 使用python 的scrapy框架进行接口分页爬取
    • 按照一定规则往接口传参,爬取接口有关于专利号的信息
    • 达到了7天内抓完接口1500万数据
    • 对爬取专利号的数据使用nodejs的requests-promise库进行专利详细数据进一步爬取
  5. 修改Hyperledger Explorer的源码,加入项目需要的功能(区块链运维开发)

    Hyperledger Explorer是Hyperledger Fabric的交易浏览器,具有rest api,由于这个开源项目缺少通过交易id查找区块信息的rest-api,但是通过阅读sdk接口,发现sdk提供了这个功能,然后通过阅读Explorer的源码,找到了代码注入的入口,然后加入了该功能的接口和实现。

  6. 区块链安全实验沙箱(区块链运维开发):

    基于docker,并且实现了Docker In Docker技术,打造了一款安全沙箱,能在沙箱docker内运行区块链环境,里面内建了全套的区块链开发需要用到的环境,同时该环境会每次重启沙盒被重置,并且沙箱和外界Host为绝对隔离的,提供给开发人员一个稳定安全的环境,也简化了开发人员部署环境的难点。

    解决了一下问题

    • 区块链环境所需要镜像的打包
    • 在docker 镜像中使用vnc,并且打开了一个前端页面去渲染vnc
    • 使用vfs文件系统实现了docker in docker
  7. Hyperledger Composer数字资产上链和交易链码设计(区块链开发)

    通过Compsoer的官方文档帮助,实现了编写允许用户创建资产,并且进行资产所属权的交易

zzinno众智科技团队( 2017年4月 ~ 2018年6月 )

大数据评教系统项目

我在此项目负责了 服务器运维、python django后端开发,nodejs后端开发

  1. 服务器运维:

    在服务器运维方面,我主要使用了docker容器编排技术(docker-compose)去部署整个服务架构,同时配合CI/CD,让同事们的程序能在代码部署上特定分支就能自动上线服务。

  2. 后端开发-django大数据评教系统后端开发:

    在django后端开发中,我负责用django完全重构以前基于java的后端代码,重构和新增共编写了50多个方法。在这个过程中,我学会了使用python的orm工具(sqlalchemy)去操作mysql数据库,学会了使用orm对数据库进行增删查改以及高级复合查询、联表查询等操作,学会了django框架去开发restful api后端,学会和前端调试接口的方法

  3. 前/后端开发-nodejs应用程序版本管理系统:

    这个程序主要使用在客户端应用程序中的版本检测和更新以及安装包的分发,在这个开发中,我负责基于nodejs的koa框架的应用程序版本管理系统的开发以及基于vue+elementjs的管理系统前端开发,在这个开发中,我学会了nodejs的程序开发,同时熟悉了koa框架,学会了使用mongodb,以及nodejs的mongodb orm框架(mongoose)的使用,学会了mongodb的建立索引,增删查改的操作

开源项目和作品

技术文章

做过的演讲

  • 盈盛智创(广州)有限公司中演讲过《docker使用基础内部培训》
  • 盈盛智创(广州)有限公司中演讲过《区块链技术的内部培训》

    技能清单

    以下均为我熟练使用的技能
  • Web开发:Golang/Python/Nodejs 比较喜欢使用golang做开发
  • Web框架:Go-gin/django/koa 熟悉会用
  • 前端框架:vuejs/elementjs 能写出能用功能,但是对前端其他知识更深入的积累不多,对具体样式调整经验不多
  • 数据库相关:MySQL(使用过orm)/mongodb
  • 版本管理、文档和自动化部署工具:Git/GoDoc/docker-compose
  • 云和开放平台:AWS/aliyun 的ec2熟悉,使用过七牛云对象存储做博客的图床
  • 运维技能:
    • shell 脚本熟悉,遇到不会的shell命令可以通过查找man知道用法
    • 熟悉nginx配置和日志排错,例如Nginx反向代理、负载均衡、缓存、URL重写及读写分离
    • 熟悉iredmail bundle的配置
    • 熟悉docker、docker swarm、docker-compose、lxc 和容器有关的技术
    • 熟悉haproxy原理、配置、高并发实践
    • 了解msqly一些基础语句以及了解mysql的主从复制和读写分离
    • 懂http服务错误代码
  • 会部署和配置的服务:ftp,nfs,nginx,mysql,mongodb,redis,haproxy,docker,邮件系统,lxd,kafka+zookeeper,rabbitmq,elasticsearch+logstash+kibana+head(elk)能分布式也能单机

工作期望和个人评价:

  • 对自己定位:

    主要是负责运维开发,擅长于docker 容器编排方案的实施以及部署方案的制定,其他方面会相应的接后端但是和运维有相关的锅来完成,从后端到前端甚至到服务器开发部署上线流程都很清楚,也写过vuejs的前端页面,毕竟做过全栈才能更好的积累自己的运维开发经验

  • 我对工作态度:

    • 能准时完成自己的工作
    • 喜欢在工作之余涉猎和工作相近的技术,并且用来改善以有的工作,例如框架,工具等
    • 能在实现情况下更深入review,看下是否会有潜在的问题,并尝试解决
    • 经常与同事分享自己的观点,无论对错,然后大家一起讨论并且得到肯定或者一些建议纠正
  • 怎么客服困难:

    • 遇到技术困难我一般会通过google、stack overflow寻找答案
    • 如果经过检索仍然未能解决,我会深入阅读文档中能讲更详细的节去看是否能解决问题
    • 最终我会尝试解决方案,然后找出最佳解,并且指定哪些东西是可行或者不可行
  • 我的优势:

    我比较擅长广度学习法,保持自己的技术广度从运维到后端开发,甚至到大数据都有了解和亲手跑过例程,也或者亲手部署过相关的东西,对新的技术能通过阅读文档快速掌握,例如2018年4月初的时候的区块链,我是从零然后通过看文档来入门的

  • 我的劣势:

    没有接受计算机科学工程的系统化教学,在算法或者计算机知识体系方面可能没有他们那么强。不过我喜欢的广度学习法,我能在我使用到这个技术的时候通过快速学习掌握这个新技术,并且能快速用于开发当中

致谢

感谢您花时间阅读我的简历,期待能有机会和您共事。

0%