初识微服务架构

软件架构的进化

什么是软件架构?

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

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

什么是微服务

  • 定义:使用一套下服务来开发单个应用的方式,每个服务运行 在独立的进程里,一般采用轻量级的通讯 机制互联,并且他们可以通过自动化的方式 部署 多微才算微?
  • 代码量?
  • 开发时间?
  • 不可度量 微服务的特征
  1. 单一职责
  • 比如订单一个服务,登录注册一个服务
  • 两个关系不大的可以作为单个服务
  1. 轻量级通信
  • 微服务与微服务之间的通信 如rpc
  1. 隔离性
  • 独立部署 相互隔离
  1. 有自己的数据 - 业务的数据独立性,降低数据复杂度
  2. 技术多样性
  • 语言不限如java,go,python都行 微服务诞生背景
  • 互联网行业的快速发展
  • 敏捷开发,精益方法深入人心
  • 容器技术的成熟(docker使微服务架构落地成为可能)

画一个传统架构图

画一个微服务架构图

  • 假定业务场景
  1. 一个在线教育的网站部分功能
  2. 用户可以登录注册,获取用户信息
  3. 有发送邮件发送短信的功能
  4. 可以查看课程列表和对课程的CRUD

微服务架构的优势

  • 独立性
  1. 独立部署,相互隔离,但微应用出问题不影响其他服务
  • 敏捷性
  1. 技术栈灵活
  2. 高效团队

微服务架构的不足

  • 额外的工作
  1. 服务的拆分
  • 数据一致性
  1. 在单体应用中 数据库使用的同一个,数据很好保持一致性,
  2. 在微应用中心 由于都是需要分库分表的在这种模式下,可能对数据库的一致性有难度
  3. 沟通成本
  4. 在单体应用中 如想修改某个接口,就可以直接修改了,
  5. 在微应用中 可能这个接口不是你负责的 或者不能你们组负责的这就需要去和负责的人沟通了

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

怎样维护成功的开源项目

开源可不仅仅是将代码扔到网上就万事大吉了,将开源项目变成能让自己引以为豪的东西才算成功。那么,你需要注意哪些方面呢? 写好指导性文字 每一个开源项目有三样东西是...

21480
来自专栏大数据

Flume日志采集应用架构升级与重构

转眼新的一年又来了,趁着这段时间总结下2017这一年的工作经验,避免重复踩坑。MOB数据采集平台升级也快经历了半年时间,目前重构后线上运行稳定,在这过程中挖过坑...

35590
来自专栏JadePeng的技术博客

Angular 中后台前端解决方案 - Ng Alain 介绍

64550
来自专栏Java架构

架构的演进,阿里资深Java工程师表述架构的腐化之谜

新技术层出不穷。过去十年时间里,我们经历了许多激动人心的新技术,包括那些新的框架、语言、平台、编程模型等等。这些新技术极大地改善了开发人员的工作环境,缩短了产品...

453100
来自专栏大葡萄元元

开发一个完整android app 需要掌握哪些知识?(转)

附上转载链接:http://jishuren.blog.51cto.com/965129/1619716

27320
来自专栏程序猿DD

微服务(Microservices)【翻译】

前言 今天跟同事们讨论了很久关于微服务实施过程中涉及的服务拆分、团队边界、技术选型等问题。期间提出的不少问题,也引发了很多新的思考。虽然在Martin Fowl...

23890
来自专栏LiveEdu在线科技教育平台

工作流程,编程,调试,性能:Unity游戏开发者应该学习的20个改进技巧

Unity 是一个备受欢迎的游戏开发平台。它的功能令人印象深刻,同时也迎合了不同的游戏开发需求。游戏开发者可以使用 Unity 创建任何类型的游戏,从世界级的 ...

42290
来自专栏Web 开发

关于NoSQL优势的一点想法

想法来源于与刚才龙老大的一番讨论,文中对于NoSQL概念性的东西摘录自:http://www.infoq.com/cn/news/2011/01/nosql-w...

15000
来自专栏DevOps时代的专栏

顾宇:成功的微服务的技术特征及其反思

在上一篇文章里,我们介绍了如何定义一个微服务改造的成功,并介绍了落地成功的微服务组织结构有哪些特征。这篇文章我们来介绍一下成功的微服务的技术特征以及我们在微服务...

12720
来自专栏程序猿DD

请不要在“微服务”的狂热中迷失自我!

2017年是“微服务”疯狂的一年,如同股灾前的狂欢,各种不同行业的技术团队都在宣讲着自己微服务实践的道路。然而大家是否有反思过自己真的在玩“微服务”吗?您真的在...

45950

扫码关注云+社区

领取腾讯云代金券