前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >初识微服务架构

初识微服务架构

作者头像
程序员同行者
发布2018-12-18 17:27:29
4390
发布2018-12-18 17:27:29
举报
文章被收录于专栏:程序员同行者程序员同行者

软件架构的进化

什么是软件架构?
  • 软件架构是在软件的内部,经过综合各种因素的考量 、权衡,选择特定的技术,将系统划分成不同的部分并使这些部分相互分工,彼此协作,为用户提供需要的价值 哪些因素?
  1. 业务需求
  2. 技术栈
  3. 成本
  4. 组织架构
  5. 可扩展性
  6. 可维护性 什么是单体架构
  • 定义:功能、业务集中在一个发布包你,部署运行在一个进程中。 单体架构优势
  • 易于开发
  • 易于测试
  • 易于部署
  • 易于水平伸缩 单体架构面临的挑战
  • 代码膨胀,难以维护
  • 构建、部署成本大
  • 新手上手困难
  • 创新困难
  • 可扩展性差

综上所述 单体架构已经out了

什么是微服务
  • 定义:使用一套下服务来开发单个应用的方式,每个服务运行 在独立的进程里,一般采用轻量级的通讯 机制互联,并且他们可以通过自动化的方式 部署 多微才算微?
  • 代码量?
  • 开发时间?
  • 不可度量 微服务的特征
  1. 单一职责
  • 比如订单一个服务,登录注册一个服务
  • 两个关系不大的可以作为单个服务
  1. 轻量级通信
  • 微服务与微服务之间的通信 如rpc
  1. 隔离性
  • 独立部署 相互隔离
  1. 有自己的数据 - 业务的数据独立性,降低数据复杂度
  2. 技术多样性
  • 语言不限如java,go,python都行 微服务诞生背景
  • 互联网行业的快速发展
  • 敏捷开发,精益方法深入人心
  • 容器技术的成熟(docker使微服务架构落地成为可能)
画一个传统架构图
单体架构图.png
单体架构图.png
画一个微服务架构图
  • 假定业务场景
  1. 一个在线教育的网站部分功能
  2. 用户可以登录注册,获取用户信息
  3. 有发送邮件发送短信的功能
  4. 可以查看课程列表和对课程的CRUD
微服务架构.png
微服务架构.png
微服务架构的优势
  • 独立性
  1. 独立部署,相互隔离,但微应用出问题不影响其他服务
  • 敏捷性
  1. 技术栈灵活
  2. 高效团队
微服务架构的不足
  • 额外的工作
  1. 服务的拆分
  • 数据一致性
  1. 在单体应用中 数据库使用的同一个,数据很好保持一致性,
  2. 在微应用中心 由于都是需要分库分表的在这种模式下,可能对数据库的一致性有难度
  3. 沟通成本
  4. 在单体应用中 如想修改某个接口,就可以直接修改了,
  5. 在微应用中 可能这个接口不是你负责的 或者不能你们组负责的这就需要去和负责的人沟通了
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-11-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 软件架构的进化
    • 什么是软件架构?
      • 什么是微服务
        • 画一个传统架构图
          • 画一个微服务架构图
            • 微服务架构的优势
              • 微服务架构的不足
              相关产品与服务
              短信
              腾讯云短信(Short Message Service,SMS)可为广大企业级用户提供稳定可靠,安全合规的短信触达服务。用户可快速接入,调用 API / SDK 或者通过控制台即可发送,支持发送验证码、通知类短信和营销短信。国内验证短信秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,全球多服务站点,稳定可靠。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档