• 初识微服务架构


    软件架构的进化

    什么是软件架构?

    • 软件架构是在软件的内部,经过综合各种因素的考量
      、权衡,选择特定的技术,将系统划分成不同的部分并使这些部分相互分工,彼此协作,为用户提供需要的价值
    哪些因素?
    1. 业务需求
    2. 技术栈
    3. 成本
    4. 组织架构
    5. 可扩展性
    6. 可维护性

    什么是单体架构

    • 定义:功能、业务集中在一个发布包你,部署运行在一个进程中。
    单体架构优势
    • 易于开发
    • 易于测试
    • 易于部署
    • 易于水平伸缩
    单体架构面临的挑战
    • 代码膨胀,难以维护
    • 构建、部署成本大
    • 新手上手困难
    • 创新困难
    • 可扩展性差

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

    什么是微服务

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

    画一个传统架构图

    单体架构图.png

    画一个微服务架构图

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

    微服务架构.png

    微服务架构的优势

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

    微服务架构的不足

    • 额外的工作
    1. 服务的拆分
    • 数据一致性
    1. 在单体应用中 数据库使用的同一个,数据很好保持一致性,
    2. 在微应用中心 由于都是需要分库分表的在这种模式下,可能对数据库的一致性有难度
    3. 沟通成本
    4. 在单体应用中 如想修改某个接口,就可以直接修改了,
    5. 在微应用中 可能这个接口不是你负责的 或者不能你们组负责的这就需要去和负责的人沟通了
  • 相关阅读:
    LeetCode 24. Swap Nodes in Pairs (两两交换链表中的节点)
    LeetCode 1041. Robot Bounded In Circle (困于环中的机器人)
    LeetCode 1037. Valid Boomerang (有效的回旋镖)
    LeetCode 1108. Defanging an IP Address (IP 地址无效化)
    LeetCode 704. Binary Search (二分查找)
    LeetCode 744. Find Smallest Letter Greater Than Target (寻找比目标字母大的最小字母)
    LeetCode 852. Peak Index in a Mountain Array (山脉数组的峰顶索引)
    LeetCode 817. Linked List Components (链表组件)
    LeetCode 1019. Next Greater Node In Linked List (链表中的下一个更大节点)
    29. Divide Two Integers
  • 原文地址:https://www.cnblogs.com/guigujun/p/10017892.html
Copyright © 2020-2023  润新知