@15311494814
2018-08-29T08:56:23.000000Z
字数 2299
阅读 720
cpaas
是以交流、通信为重要服务的平台及服务系统,其中平台应包含以下3个主要方面:
微服务,容器技术,devops
在paas平台使用微服务的目的主要是为了解耦和组件化,微服务是基于rest或者rpc的基于消息队列的异步消息处理机制,与传统第三方api的区别是加入了异步处理,分布式同步,io异常处理以及流量监控等功能。
微服务优点
1、通过分解巨大单体式应用为多个服务方法解决了复杂性问题,每个微服务相对较小
2、每个单体应用不局限于固定的技术栈,开发者可以自由选择开发技术,提供API服务。
3、每个微服务独立的开发,部署
4、单一职责功能,每个服务都很简单,只关注于一个业务功能
5、易于规模化开发,多个开发团队可以并行开发,每个团队负责一项服务
6、改善故障隔离。一个服务宕机不会影响其他的服务
微服务缺点:
1.开发者需要应对创建分布式系统所产生的额外的复杂因素
目前的IDE主要面对的是单体工程程序,无法显示支持分布式应用的开发
测试工作更加困难
需要采用服务间的通讯机制
很难在不采用分布式事务的情况下跨服务实现功能
跨服务实现要求功能要求团队之间的紧密协作
2.部署复杂
3.内存占用量更高
使用沙箱机制,linux base的以镜像为载体的虚拟化容器技术。
第一阶段:映射宿主机端口 + HAProxy转发
由于一个Docker容器只是一个(或一组)进程的封装,一个容器想要向宿主机之外的网络提供服务,就只能绑定宿主机的端口了,端口的管理也是一件大部分情况下都不希望人去操心的麻烦事,为了避免端口冲突,对于需要暴露端口的容器,Docker会随机绑定一个宿主机端口,这个时候我们就需要服务发现机制来帮助不同机器上的服务来进行通信了。
第二阶段:Rancher
1,自动化功能:
编排过程包含分配机器,拉取镜像,启动/停止/更新容器,存活监控,容器数量扩展和收缩
2,声明式定义服务栈:
提供一种机制,可以用配置文件来声明服务的网络端口,镜像及版本,在需要的时候通过配置可再现的创建出一整套服务。
3,服务发现:
提供DNS和负载均衡,一个容器启动之后,需要其他服务能够访问到它,一个容器终止运行之后,需要保证流量不会再导向它。
4,状态检查
第三阶段:Kubernetes
与rancher相比,k8s提供了更好的性能处理,在中大型服务集群的处理上更加得心应手。
技术 | 凡泰情况 | 自研情况 |
---|---|---|
docker | 使用 | 使用 |
rancher | 使用 | 使用 |
k8s | 未知 | 计划在后续迭代中使用 |
springcloud | 使用 | 使用 |
im | 基于融云的im Bot | 准备在子服务中研究融云bot |
NLP | 使用 | 初期不考虑,机器学习需要跟研发部沟通 |
事件驱动 | 自研 | 需要跟资管部沟通相关技术,协同进行分析研究 |
appstore | 自研 | 目前分析属于paas平台自身功能,rancher或者k8s+docker,docker Compose等都能满足,需要后续实验 |
CICD | 已使用 | 需要跟资管部沟通cicd相关技术。 |
open开发规范 | 已有 | paas平台后续实现 |
1,共同点:
基于rancher,docker镜像技术实现自动化部署,使用springcloud微服务,都是基于微服务,容器技术,devops三部分考虑。
2,不同点:
凡泰目前确认的是使用rancher,但是自研还有多种选择,比如rancher+k8s,openshift3,开发运维凡泰未知,自研相关有jenkins,chef等等
3,其他技术由于技术保密等原因无法知晓。
优势:
1,基于现有的成熟体系,少走很多弯路,不需要了解核心技术思想和底层原理,只需要按照开发文档和docker部署流程开发自服务并接入凡泰系统即可。
2,凡泰提供周全的相关文档,周全的技术支持,依赖凡泰的服务生态圈,不需要考虑太多性能、分布式、集群、负载均衡、流量监控等等问题,不需要研习运维相关问题。
3,由于不需要研究Cpaas平台核心原理和技术,拥有凡泰技术支持,开发自服务的周期和成本会少很多。
4,凡泰提供了多终端的支持,不需要再去开发维护客户端、移动端app。
劣势:
1,无法接触底层核心,无法了解底层原理,相当于只是通过api和开发文档接入第三方,无法实现更加自由的定制化,严重依托于第三方平台。
2,无法实现宽拓Cpaas平台的产品化,产品依赖凡泰的技术体系,需要考虑照顾到凡泰的技术栈而需要研习其他开发技术或者开发语言。
优势:
1,完全设计和组织Cpaas的核心底层,以及原理,对以后的自定义开发和改造扫清了障碍。
2,自己维护平台和核心,为以后的平台产品化,服务化打下基础。
3,建立自己的服务生态圈,更加自由的为数字化的目标提供了基础支持。
劣势:
1,需要付出巨大精力维护Cpaas平台,这是Cpaas的根本。
2,需要一步一步研究迭代,项目由开发功能转为开发平台,需要的时间,成本和技术要求会更高。
3,需要从头开始一步一步建立开发生态圈,需要相关资源和公司的支持。
4,需要自行维护多终端的服务,需要开发对应的桌面客户端和移动端、微信端。
5,需要功能产品化,服务化,需要编写合理严谨的大量openApi文档,并在后续提供技术支持。