zoukankan      html  css  js  c++  java
  • Spring Cloud(1):概览

    什么是微服务?

    小型的,简单的和解耦的服务 = 可伸缩的,有弹性的和灵活的应用程序.

     

    什么是云?

    基础设施即服务(Infrastructure as a Service, Iaas):云提供商只提供基础设施(硬件,操作系统)。

    平台即服务(Platform as a Service, PaaS):云提供商还会提供基于某个平台相关的软件,接口。

    软件即服务(Softwire as a Service, Saas):提供某一种具体服务,消费者完全被动,无法对技术进行选择。

     

    基于模式的微服务开发构建

    核心微服务开发模式:服务粒度,通信协议,接口设计,配置管理,服务之间的事件处理。

    微服务路由模式:服务发现,服务路由。

    微服务客户端弹性模式:客户端负载均衡,断路器模式,后备模式,舱壁模式。

    微服务安全模式:验证,授权,凭据管理和传播。

    微服务日志记录与跟踪模式:日志关联,日志聚合,微服务跟踪。

    微服务构建和部署模式:构建和部署管道,基础设施即代码,不可变服务器,凤凰服务器。 

     

    使用Spring Cloud构建微服务

     

    微服务的特点及构建遵循的原则

    约束:微服务遵循UNIX理念,即应用程序是服务的集合,每个服务只做一件事,并做好一件事。

    松耦合:基于微服务的应用程序是小型服务的集合,服务之间使用HTTP和REST通过非特定实现的接口彼此交互。只要服务接口未改变,微服务内部可以更加自由地被修改。

    抽象:微服务完全拥有自己的数据结构和数据源,微服务所拥有的数据只能由该服务修改。

    独立:每个微服务可以独立地编译和部署。

    服务粒度

    开始的时候可以让微服务涉及的范围更广一些,然后将其重构到更小的服务。

    重点关注服务如何相互交互。

    随着对问题域的理解不断增长,服务的职责将随着时间的推移而改变。

    服务粒度过粗, 则会表现为:服务承担了过多的职责, 会餐跨大量表来管理数据, 测试用例将变得过多。

    服务粒度过细, 则会表现为:微服务像兔子一样繁殖, 服务彼此严重依赖, 成为简单CRUD服务的集合。

    微服务构建的最佳实践

    代码库:每个微服务及服务器信息都应该处于版本控制中, 并且有自己独立的代码存储库。

    依赖:通过构建工具(e.g. Maven)明确声明依赖项。

    配置:将应用程序配置(特别是特定于环境的配置)与代码分开存储。

    后端服务:通过网络与数据库或消息系统进行通信。

    构建,发布和运行:保持应用程序构建,发布和运行完全分开,已构建的服务是不可改变的。

    进程:微服务应该始终是无状态的,它们可以在任何超时时被杀死和替换,而不用担心一个服务实例的丢失而导致数据丢失。

    端口绑定:可运行的微服务要包含一个运行时引擎(不需要单独的web服务器),服务应该在命令行上自行启动,并通过公开的HTTP端口立即访问。

    并发:在需求量增大时,要启动更多的微服务实例水平伸缩。

    可任意处置:可以根据需要任意启动和停止。

    开发环境与生产环境等同:最小化服务运行的所有环境之间的差距。

    日志:使用工具记录日志,直观查看日志。

    管理进程:使用通用脚本对服务执行管理任务。

  • 相关阅读:
    Python课程第三天作业
    Python课程第一天作业
    centos7安装Jenkins
    搭建zookeeper+kafka集群
    redis在实践中的一些常见问题以及优化思路
    部署redis4.0-cluster
    redis哨兵架构的基础知识及部署和管理
    Redis主从复制
    部署Redis4.x单机版及配置RDB和AOF持久化
    xshell使用密钥登陆linux
  • 原文地址:https://www.cnblogs.com/storml/p/9579856.html
Copyright © 2011-2022 走看看