zoukankan      html  css  js  c++  java
  • 微服务 Go

    微服务

    • 微服务:将某个模块拆成单独的服务

      缺点:代码量增多 (每个服务间进行交互)开发时间增加 毕竟要考虑怎么拆分
      特点:
          1.单一职责
          2.轻量级通信  :http  rpc 非轻量级:java  RMI
          3.隔离性:每个服务相互隔离,互不干扰
      	4.有自己的数据:每个项目可以有自己独立的数据库  互相不影响
      	5.技术多样性:各种模块可以使用不同的语言  不同的框架去做
      例如: 登录注册  java   商品 python 搜索go
      

    微服务诞生背景:

    1.联网快速发展 需求变化快 用户数量变化快
    2.敏捷开发深入人心,用最小的代价做最快的迭代 频繁修改 测试 上线
    3.容器技术成熟,是微服务的技术基础
    

    架构演变历史:

    ​ 单体架构 ->垂直架构->SOA架构->微服务架构

    单体架构:

    所有项目集成再一个项目中
    项目整个打包 部署到服务器运行
    应用和数据库可以分开部署 提高性能
    优点:简单开发 开发成本低 架构简单
    缺点:项目复杂之后很难扩展和维护,扩展成本高,有瓶颈,技术栈受限,新科技不能使用
    

    垂直架构:

    商城项目(单体,有自己的数据库)
    物流项目(单体,有自己的数据库)
    会造成数据的冗余
    项目之间需要处理数据同步,通过数据库同步
    比如说用户表
    互相之间可以调用  数据库 or 接口
    垂直架构师对于大项目的拆分
    将整个大项目拆成多个单体项目
    优点 : 
    小项目的首选,架构同样简单
    避免单体架构无线扩大
    技术不在受限
    缺点:
    很多功能放在一个工程中,有一定瓶颈
    系统性能扩展要通过集群节点扩展,成本较高
    

    SOA架构:

    ESB  (Enterprise Service Bus)企业服务总线:
    	应用需要那块数据访问企业服务总线
    	是传统中间件技术 与XML、web服务等技术的结合产物
        提供网络中最基本的连接中枢,是构筑企业神经网络的必要元素
    
    
    系统层  和垂直架构一样对项目进行拆分
    访问层  ESB 负责调用不同的数据
    服务层  抽取系统层冗余的部分 形成数据接口  比如上图用户管理
    数据层  不同数据的数据库
    
    优点:
    	提高系统的可重用性
    	ESB减少系统接口的耦合性
    缺点:
    	系统与服务界限模糊 不利于系统开发
    	ESB服务接口协议不固定,不利于系统维护
    

    微服务架构

     UI层 
     网络层
     服务层
     数据层
     
     特点:
     	将服务层一个一个的抽取成微服务
     	遵循单一原则
     	微服务之间采用一些轻量协议传输数据
     优点:
     	服务拆分力度非常细,利于开发
     	提高系统的可维护性  那块出问题  维护那块
     	比EMS更轻量
     	适用于互联网更新换代快的情况
     缺点:
     	服务过多,服务治理成本高
     	开发技术要求高
     	
    

    传统访问方式:

    微服务访问方式

    • APIGetway 解决请求过多时候 接口访问的分配问题
    就是将每个模块进行拆分
    

    微服务架构的优势:

    • 独立性
    • 使用者容易理解
    • 技术栈灵活
    • 高效团队

    微服务架构的不足:

    • 额外工作,服务的拆分
    • 保证数据一致性
    • 增加沟通成本

    微服务如何发现

    1. 客户端发现

      • 服务注册 访问注册信息
      • 查询注册信息
      • 服务调用
      • 也就是微服务启动后,将自己IP和端口进行注册,得到提供服务的IP和端口,通过负载均衡访问微服务
    2. 服务端发现:客户端访问时,不去注册中心了,通过服务发现代理去直接访问

    微服务如何部署、更新和扩容

    • 微服务部署到docker容器
    • 涉及服务编排(容器管理):K8S,swarm

    RPC

    • 远程过程调用(Remote Procedure Call,RPC)是一个计算机协议
    • 该协议允许运行一台计算机的程序调用另外一台计算机的子程序,而程序员无需额外的为这个交互作用编程
    • 如果涉及的软件采用面向对象编程,那么远程过程调用亦可称作远程调用或远程方法调用

    流行RPC框架对比

    PS: 以上图片源自网络

  • 相关阅读:
    无缝轮播图
    瀑布流之ajax
    进阶版轮播图
    桌面特效
    3D模型文字动画
    Razor 常用方法
    easyui常用
    C#
    Redis设置记录
    日志三剑客ELK
  • 原文地址:https://www.cnblogs.com/Jacob-yang/p/14697109.html
Copyright © 2011-2022 走看看