• 微服务学习笔记1


    一、微服务架构的特点:

    1.将系统服务完全独立出来,并将服务层抽取为一个一个的微服务;

    2.采用一些轻量级协议进行传输;

    3.服务拆分力度更细,有利于资源重复利用,提高开发效率;

    4.可以更加精准的制定每个服务的优化方案,提高系统可维护性

    5.相比ESB更轻量;

    微服务(抽象)<==>单体应用

    模块单体?数据库单体?==》服务对应单体模块,单体数据库??

    例如:

    用户服务对应用户服务数据库

    订单服务对应订单数据库.......

    • 所有数据库相互隔离,由各自的服务自己负责
    • 微服务架构使整个系统的分工更加明确,责任更加清晰,每个人只专心负责为其他人提供更好的服务

    什么是单体架构

    • 就是将应用程序的所有功能都放在一个项目或解决方案中,不管有没有分布式,它们的代码都运行在同一个进程中,所有的应用资源也都在同一个进程中
    • 适用于简单微小的应用

    单体架构应用问题

    • 复杂性高——代码难以理解、难以理解导致代码质量低,复杂性进一步增加、代码难以被修改和重构
    • 伸缩性差——单体只能按整体横向扩展,无法或很难分模块垂直扩展;IO密集型模块和CPU密集型模块无法独立升级和扩容;
    • 可靠性差——一个bug可能导致整个应用崩溃
    • 阻碍技术创新——
      • 受技术限制,团队成员使用同一框架和语言,模块得不到拆分,不能使用新的语言和框架;
      • 升级和变革技术框架困难,当有符合业务场景的新技术产生或新版本时,升级和变革技术框架所带来的重构成本和风险很高
      • 想尝试新的语言也变得很困难,因为开发成本的上升,重构和新需求迭代无法协调,导致最终只能是妥协继续使用原来的框架和语言

    注:单体项目,适用于简单固定业务的项目,对于无法固定业务的不适用于单体业务。

    微服务定义

    • 什么是服务化
      • 服务化就是把传统的单机应用红的本地方法调用,通过改造,改造成通过接口产生的远程方法调用
      • 通过服务化,可以解决单体应用膨胀、团队开发耦合度高、协作效率低下的问题
    • 服务拆分粒度更细
    • 服务独立部署
    • 服务独立维护
    • 服务治理能力要求高

    架构参考如下(仅供参考了解):网关、注册中心

     微服务的优点:拆分

    • 易于开发与维护
    • 独立部署
    • 伸缩性强
    • 与组织结构相匹配
    • 技术异构性——不同的服务,可使用不同的技术,同时使用多种开发语言或多种数据库

    总结:微服务架构是将复杂臃肿的单体应用进行细粒度的服务化拆分,每个拆分出来的服务各自独立打包部署,并由不同的团队开发和运维,从而极大

    提高了应用交付的效率,并被各互联网公司所普遍采用。

    微服务和Docker

    服务拆分

    什么时候应该拆分单体应用?

    服务化拆分具体如何实施?

    服务拆分的方式:纵向拆分、横向拆分——拆分方式多种,不能一概而论

    ConSul

    ConSul是HashiCorp公司推出的使用Go语言开发的开源工具,用于实现分布式系统的服务发现与配置

    ConSul是分布式的、高可用的、可横向扩展的

    ConSul提供了服务发现、健康检测、Key/Value存储、多数据中心等功能

     下载地址:https://www.consul.io/ 

    K8S

    Docker基础上编排、调度;集群管理;弹性伸缩;服务治理;负载均衡;监控;认证...

    Docker:静态容器,可多个,类似--类对象可多个

    Service Fabric--微软开源

    .net core下的微服务构件

    • 服务治理:Consul
    • API网关:Ocelot
    • 作业调度:Quartz.NET,Hangfire
    • 分布式日志:Exceptionless
    • ESB:Masstransit(RabbitMQ)
    • APM:Metrac.App,Buttfly
    • ......
    博客内容主要用于日常学习记录,内容比较随意,如有问题,还需谅解!!!
  • 相关阅读:
    XTREE随笔
    多重共线性
    常用特征选取算法
    最短路径算法的实现(dijskstra):Python
    数据科学的完整学习路径—Python版(转载)
    windows下64位python的安装及机器学习相关包的安装(实用)
    拓扑排序 详解 + 并查集 详解 + 最小生成树(MST)详解 【普利姆算法 + 优先队列优化 & 克鲁斯卡尔算法】
    最短路算法 :Bellman-ford算法 & Dijkstra算法 & floyd算法 & SPFA算法 详解
    在linux下部署项目所用到的基本linux命令
    素数筛 模板
  • 原文地址:https://www.cnblogs.com/YYkun/p/14549638.html
Copyright © 2020-2023  润新知