您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 容器技术与微服务架构在跨境电商领域的集成实践
容器技术与微服务架构在跨境电商领域的集成实践大纲一、跨境电商业务特征及技术特点二、微服务架构及面临的困境三、基于Docker的私有容器云平台设计四、Docker实践中遇到的问题及解决方案五、总结容器技术与微服务架构在跨境电商领域的集成实践陈天影一、跨境电商的业务特征及技术特点海外市场拓展服务跨境支付DHpay综合物流服务DHlink互联网金融服务DHfinet社交商务Socialshops其他增值服务跨境电商的业务特征8个多语言平台国际合作伙伴物流&支付约120万家国内供应商;1000万买家遍布全球230个国家和地区4000万在线产品业务多品类多覆盖广流量大跨境电商的技术特点可扩展高并发海外部署多机房可管理可监控二、微服务架构及面临的困境微服务框架多语言监控治理微服务架构要解决的问题:服务通信、路由寻址、服务监控、服务治理、多语言业务代码服务消费者ClientAgent服务提供者业务代码ServerAgent服务提供者业务代码ServerAgent异构语言业务代码服务消费者通信和路由服务注册中心-zookeeper集群apsaras服务治理实时数据监控历史信息统计报警服务依赖关系分析服务流量控制调用链路追踪性能瓶颈分析SLA分析暂停恢复下线服务监控异构集群语言ProxyHttpKafkaStorm解耦(模块化),易扩展效率(开发、测试、部署)高可用(多实例)弹性伸缩,灵活应对峰值流量(分布式、独立运行)多机房部署服务拆分之后(静态依赖关系)优势:困境微服务的独立性使得系统具备弹性伸缩的能力,但仍需人为介入开发效率提高、交付速度有所提升,新业务上线仍受限于资源申请流程微服务架构导致模块数量快速增长,服务粒度与资源粒度的矛盾一台服务器部署多个微服务,产生资源竞争运行环境差异性引发错误部署海外机房周期太长(每个应用一一分配资源、配置、部署)降低物力资源成本的需求……Docker标准化:集装箱式的交付方式,快速部署,并避免运行环境差异化轻量:资源占用小、启动速度快,在一个服务器上可以部署很多容器便捷:直接部署应用、无需申请资源隔离:一定的资源隔离性灵活:可以快速回滚和更新变更开源:生态系统发展迅速成本:搭建成本低、学习成本低三、基于Docker的私有容器云平台设计设计原则兼容已有软件架构混合部署,历史资产无缝迁移减少对已有业务开发流程的影响整体架构服务集群InfrastructureAWS**云物理机虚拟机apsaras统一监控服务监控Docker主机Docker服务Docker主机Docker服务apsaras容器统一配置中心(Etcd)DockerRegistry(Harbor)虚机服务Service物理机服务Service容器监控(shell+influxdb)(zk+日志分析)主机监控zabbix监控代理SwarmAgentDockerDaemon监控代理SwarmAgentDockerDaemon容器管理平台自定义调度策略Swarm开发运维流程变化DEV:代码提交、构建、申请机器资源、发版OPS:集群、主机维护(一键初始化),镜像维护,线上监控DhDockerControllerJenkinsGitRegistryCluster1CommitBuild管理平台PullDockerpullMonitorDEVOPS镜像维护主机维护发布DockerDaemonContainerContainerDockerDaemonContainerContainerCluster2DockerDaemonContainerContainerDockerDaemonContainerContainerElasticcomputingdockerrunMonitor四、Docker实践中遇到的问题及解决方案遇到的问题监控排障镜像浮动IP混合部署混合网段容器状态不一致Problem1-镜像的制作和维护VS优点:避免mount,应用和镜像一体缺点:频繁构建镜像数量猛增改造工作量大不同环境配置文件不同优点:镜像不用重新构建缺点:所有宿主机维护应用副本违背了Docker集装箱原则BaseImageAPP/BINBaseImage+APP/BIN开发时,镜像和应用分离,OPS维护Dockerfile,DEV维护代码部署时,镜像和应用合体多环境不同配置,分布式配置管理中心+配置文件中心ContainerAPP/BINContainerAPP/BINDockerDaemonRegistryConfRepositoryDeployOPSSolution1-基础镜像+应用下载BuildRepositoryDEVContainerAPP/BINDEVDockerfileProblem2-混合部署的网段互通网络连通要求:同一宿主机内的容器互通不同宿主机之间的容器互通容器与其他虚机、物理机互通-混合部署的必要条件Legacy资产Vmware集群物理机其他DockerDaemonContainerContainerContainerContainerDockerDaemonDocker集群Docker的网络方案bridge模式:与外界通讯用端口映射,NAT增加通讯复杂性container模式:单机的多个容器之间共享网络host模式:共享主机网络,端口无法重用,容易冲突自定义•Bridgenetwork–isusefulincaseswhereyouwanttorunarelativelysmallnetworkonasinglehost.•Overlaynetwork–multi-hostconnection,needswarmorakeystore.•MACVLANnetwork–multi-hostconnection•CustomizednetworkpluginSolution2-桥接网络打通容器与局域网网络Docker集群DockerDaemonContainerEth0ContainerEth0Br0Eth0DockerDaemonContainerEth0ContainerEth0Br0Eth0物理交换机Vmware集群物理机其他Legacy资产dockernetworkcreate--driver=bridge-ocom.docker.network.bridge.name=br0--gateway=192.168.2.14--aux-addressDefaultGatewayIPv4=192.168.2.254--subnet=192.168.2.0/24dockernetdockerrun-d--net=dockernettomcat:7.0DockerDeamon•--iptables=false•--ip-forward=false优点:性能较好;可以在一台物理机上部署多个不同网段的容器限制:Docker1.11版本的MacVlan仍然是experimental;在1.12版本已标注为:MacVlandriverisoutofexperimental#23524MacVlanProblem3-混合网段的容器部署Problem:网段过大导致广播风暴,混合网段如何权衡资源调度和IP分配--labelsubnet=192.168.3.0/24DockerDaemonContainerContainerSolution3-自定义IP资源调度策略DhDockerControllerSwarm+自定义调度策略--label=?Cluster--labelsubnet=192.168.4.0/24DockerDaemonContainerContainer--labelsubnet=192.168.2.0/24DockerDaemonContainerContainerProblem4-浮动ipProblem:浮动ip重启一下dockerdaemon/容器,ip就变了Ip混乱,不利于定位问题Solution4-使用固定ip使用固定ipdockerrun–d--ip=192.168.11.23--net=dockernettomcat引入IPAM模块,负责IP池的创建和维护,IP资源的占用和释放Problem5-排障持久化日志将日志mount到主机,主机上运行轻量级Agent进行日志采集,集中分析实时查看:检查日志,调整配置,重启应用,查看资源使用率装一个SSHServervsDockerExec别把容器当虚机使!!Solution5-DockerWebShellDockerWebShell实现从Web浏览器以类似SSH的方式登录并操作Docker容器DhDockerControllerWebBrowserWebSocketDockerExecContainerWeb浏览器负责界面呈现。运行JS脚本,通过WebSocket与DockerController建立通信链路。DhDockerController是Docker容器应用的控制中心,作为桥梁,负责消息的转发。通过DockerHTTPAPI与DockerDaemon建立通信链路,利用ExecStart返回的数据流承载DockerController和DockerDaemon之间的交互数据。DockerDaemon提供HTTPAPI接口给外部系统调用以访问容器内部。这里用到的API包括:ExecCreate、ExecStart、ExecResizeDockerDaemonContainerDockerWebShellProblem6-监控方案选择dockerstats,docker原生memory计算争议性能较差cAdvisor,Google开发,容器和主机级别监控一定的学习成本与已有监控报警系统集成有难度Solution6-自研Shell实现容器级别数据收集应用级别数据统计主机级别-容器总数及状态(性能由zabbix监控)ShellonDockerHost数据采集InfluxDB汇总分析报警系统策略和报警ShellonDockerHost数据采集ShellonDockerHost数据采集DBProblem7-容器状态的同步异常退出命令行创建ClusterDockerDaemonContainerContainerContainerDhDockerControllerDocker事件机制deleteduntaggedtaggeduntagimportpulldockerdeletedockerimportdockerpulldeletetagpushdockertagdockerpush镜像事件容器事件Solution7-监听容器事件import(os…dockerApigithub.com/fsouza/go-dockerclient)funcmain(){……docker,err:=dockerApi.NewClient(*dockerHost)iferr!=nil{//Addlogginghereos.Exit(0)}events:=make(chan*dockerApi.APIEvents)docker.AddEventListener(events)formsg:=rangeevents{ifmsg.Status==die{goinspectContainer(docker,msg.ID,msg.Status)//inspectthecontainerandupdateinfotoDB}}}五、总结总结Docker+微服务架构,快速部署,弹性伸缩持续集成,快速迭代,简化上线流程混合部署,历史资产无缝迁移基础镜像+应用下载,减小镜像库每个应用都可以有局域网业务IP;指定静态ip基础环境标准化,加速海外部署
本文标题:容器技术与微服务架构在跨境电商领域的集成实践
链接地址:https://www.777doc.com/doc-1590943 .html