docker维护(docker维护成本高吗)

docker维护(docker维护成本高吗)本文作者拥有超过 12 年互联网产品开发和管理经验 专注于互联网技术架构设计 对产品设计 敏捷开发 安全 OKRs 大数据等领域有深入研究 本文介绍 微服务架构和优缺点 并讲解常见微服务架构模式和适用场景 最后结合实践 选择合适的云平台 讲解如何部署 管理 迁移和服务伸缩 最后讲解实际运营中的 问题及解决方案 总结优点就是 灵活 稳定 省资源 总结缺点就是 服务多 管理难度大 这是以前大家常用的 MVC 模式 讲究模块化设计和设计模式 从多个服务的结果聚合到一个聚合服务



本文作者拥有超过12年互联网产品开发和管理经验,专注于互联网技术架构设计,对产品设计、敏捷开发、安全、OKRs、大数据等领域有深入研究。本文介绍 微服务架构和优缺点,并讲解常见微服务架构模式和适用场景。最后结合实践,选择合适的云平台,讲解如何部署、管理、迁移和服务伸缩,最后讲解实际运营中的 问题及解决方案。

微服务架构云端应用

微服务架构云端应用

微服务架构云端应用

微服务架构云端应用

微服务架构云端应用

总结优点就是 :灵活、稳定、省资源

微服务架构云端应用

总结缺点就是:服务多,管理难度大

微服务架构云端应用

微服务架构云端应用

微服务架构云端应用

微服务架构云端应用

微服务架构云端应用

这是以前大家常用的MVC模式,讲究模块化设计和设计模式。

微服务架构云端应用

从多个服务的结果聚合到一个聚合服务,最常见的聚合服务是web服务,主要功能是页面表现,后端的服务都是纯业务功能服务,扩展业务只需要增加一个新的后端微服务就可以啦,这个模式是最常用模式。

微服务架构云端应用

代理模式是一种特殊的聚合模式,对外是一个统一的包装,一般做内部接口的代理,对外统一一个接口。

微服务架构云端应用

可实现部分业务的逻辑分离,数据共享。
用在一体化架构往微服务架构迁移过程中的过度模式。
还可用在两个服务之前有数据一致性要求,通过统一的数据库事务来实现。

微服务架构云端应用

适合不需要同步任务返回的服务,比如任务型服务。
这种模式容错性好,性能高。
当然,这是异步本身的优点 比较复杂的业务场景大家可以研究下 CQRS ,核心也是异步。

微服务架构云端应用

微服务架构云端应用

服务部署的挑战
每个服务都需要 独立的代码管理、版本管理、编译构建、部署到测试环境,部署到生产环境,代码回滚等等事情,如果要有几十个服务要部署,人工管理几乎不可能完成。
服务伸缩的挑战
无状态服务 需要配置负载均衡和增加节点,有状态服务需要扩充单个服务的资源,如果需要减少资源浪费,需要监控每个服务,还需要减少节点和资源。
服务高可用的挑战
每种服务的高可用策略都不一样,无状态服务相对简单,管理每个有状态服务都是难题。
服务容错的挑战
任何一个服务的可用性都不是 100% 的。在分布式系统中,当我依赖的某个服务不可用的时候,我自身也将不能工作 。如果是一个复杂的分布式系统,会依赖更多服务,任何一个服务不可用的时候,系统自身也将不能工作,再加上网络不稳定的因素,系统自身的可用性将大幅度下 降。
依赖关系的挑战
依赖配置文件,如果写在代码中,需要重新部署才能生效,而配置文件还会污染代码。
服务监控的挑战
监控cpu?负载?磁盘IO? 大量微服务如何同时监控?什么方式监控更加有效?

微服务架构云端应用

好雨云( www.goodrain.com)

微服务架构云端应用

一定要让用户简单
内部封装:不用管理计算资源和网络资源,并把某些复杂特性包装在内部。
整体对外:服务做为一个整体管理。
以业务为核心,去除技术多余技术概念。

微服务架构云端应用

我们支持 java,php,python,node.js,ruby,golang等开发语言。
如果需要更加灵活的方式 就需要用 dockfile了
源代码支持 github 和 私有代码仓库


以敏捷为主,关键性的服务,可以定制开发部署流程,增加权限限制,符合内审制度。

微服务架构云端应用

水平伸缩 用于 无状态的 server 和 worker 类的服务。
垂直伸缩 用于 有状态的服务。

微服务架构云端应用

一般通过LB和消息队列支持无状态服务高可用
有状态服务的高可用比较困难,我们通过统一的框架支持。

微服务架构云端应用

有点类似spring的依赖注入

微服务架构云端应用

类似保险丝,当服务B变慢,达到断路器的阀值,服务B,将自动下线,不至于影响其他服务,当延迟变小,服务逐步恢复。
容错还有一种方式是使用异步。

微服务架构云端应用

业务指标:平均响应时间,吞吐率 ,在线人数
在实际场景中,使用业务监控可以替代技术监控,而且更加简单容易理解。

微服务架构云端应用

Q:请问你是基于Docker和Mesos吗?

A:用了Docker。
Q:是混合云架构吗?

A:是的,也可用在私有云。
Q:微服务是谁发布哪?

A:只要有代码就可以发布微服务,一般由微服务的开发者发布。
Q:业务系统日志是如何处理的?

A:统一输出到标准输出和错误输出,按租户存储,实时显示到页面,可以按天下载。
Q:请问你们的容器管理系统是基于开源平台还是自己开发的?有何优势?

A:用了一部分开源。
最大的优势是简单和灵活:

  1. 减少了很多技术概念,只用管理以业务为核心的应用,使用更加简单
  2. 由于架构的灵活性,除了支持微服务架构,还可以支持更加复杂的架构。
  3. 好雨云可以跑在任意IAAS上,理论可支持全球数据中心。
  4. 支持开源服务和用户贡献的服务,用户选择空间更大。 </blockquote> Q:请问你们的服务「水平伸缩」和「垂直伸缩」分别面对哪类场景?如何实现?
    A:「垂直伸缩」对于所有场景都是可以使用的。「水平伸缩」用到无状态服务的场景,而且可以和「垂直伸缩」叠加使用的,有状态服务不支持水平伸缩。针对不同微服务类型,在管理后台配置就可以实现。
    Q:微服务跨平台如何解决网络延迟问题呢?
    > A:在网络不稳定的场景,服务之前的调用一定要用断路器,另外只有优化物理网络链路了。

    Q:微服务怎么解决后端数据库的部署和依赖问题 ?
    A:在好雨云,数据库也算特殊一类微服务,同样有其他微服务的特性,一样可以通过微服务的特性部署和配置依赖关系。
    Q:介绍下服务间通信是如何实现的?
    A:在服务使用端实现了一个透明的代理,它根据服务注册的Endpoint,找到要使用的服务,如果是多个服务,自动实现负载均衡。
    Q:支持的语言有没有c语言?
    A:可以通过dockfile支持的。
    Q:请问一下docker选用的是哪个版本?有特殊原因么?
    A:我们比较保守,用的是比较稳定的,除非有个大特性吸引我们
    Q:请问代理模式是指类似于 API GATEWAY 吗?具体用什么实现的?
    A:是的。有很多种实现方式,可以自己写代码实现,也可以部署一个 Nginx。
    Q:从前面架构图看每个微服务的数据库是独立的,这是必须的吗?
    A:这样有很多优点,比如业务隔离,独立团队维护,业务分区,等等,不是必须,共享模式就是特例。
    Q:能否理解解决「服务伸缩」问题的重点是「服务发现」和「状态共享」?
    A:这块的核心依赖程序实现,如果程序实现的好,就可以做到非常好的水平伸缩,我们自己的有状态服务也是可以水平伸缩的。
    Q: 请问当每个服务都可能同时存在多个在线版本时,如何做ab testing?如何控制业务路由?
    A:ab testing 我们当前没有实现,下一步会引入这个特性。我们的设计思路是实现一个控制用户访问路由的微服务,同时支持ab testing。
    Q: 哪种服务模式用的最多?异步消息模式吗?
    A:用的最多的是聚合模式和异步消息模式。
    Q:微服务后端的数据库是弹性伸缩的怎么做的?MySQL,mongodb
    A:要支持水平伸缩,需要部署一个支持水平伸缩的数据库中间件做为微服务。
    垂直伸缩,直接调整资源就可以了,受限于物理机的资源容量。
    Q:伸缩的时候对业务可以做到完全透明吗!
    A:是的。我们现在的实现是对业务完全透明。
    Q:服务发现用到什么,Consul、Dubbo?
    A:轻量级封装 etcd。
    Q:每个微服务对应一个数据库,怎么做到数据共享呢?
    A:每个微服务后面的数据库支持有状态数据的持久化,对外整体是一个业务服务,需要根据业务关系来梳 理服务结构。如果有一致性要求比较高的场景,可以使用共享数据库或消息服务实现。
    Q:垂直伸缩,调整资源就可以了,资源需求超过一台物理机呢?拆库?
    A:三种方式:第一种,把业务拆的小,数据库分库。第二种,数据库 sharding。第三种,使用CQRS模式,重新设计实现。
    Q:服务调用链的事务怎么保证的?
    A: 可以通过共享数据库,使用数据库事务解决调用链事务问题。 另外,还可以使用异步的消息服务,通过保证消息可靠消费来实现。
    Q:CQRS 模式的 维护成本很高啊 有评估过这种改造的成本吗?
    A: 有框架重用的,比如AKKA,性能奇高,开发也很简单。只是学习曲线比较陡
    Q:能分享下如何把控提供微服务的细粒度,微服务的范围和边界怎么控制?
    A: 一定要结合实际业务场景,还要看团队情况,我的经验是,微服务的粒度和内部人员管理关联。随着业务发展,粒度也需要不断调整的。边界要考虑业务抽象的合理性。
    ===========================================================
    以上内容根据2015年11月24日晚微信群分享内容整理。分享人: 刘凡,好雨云创始人兼CEO。曾任澳客网 CTO和CEO职位。拥有超过12年互联网产品开发和管理经验,专注于互联网技术架构设计,对产品设计、敏捷开发、安全、OKRs、大数据等领域有深入研究。推崇反应式编程,并在多个产品中成功应用。 DockOne每周都会组织定向的技术分享,欢迎感兴趣的同学加微信: liyingjiesx,进群参与,您有想听的话题可以给我们留言。

    来自:http://dockone.io/article/860
编程小号
上一篇 2025-02-27 23:06
下一篇 2025-02-24 16:01

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/72049.html