Design Patterns Creational

GitbookCourses2021-02-22


💡 Design Patterns: Creational

Design Pattern

🪕 1. Creational Design Patterns


  • Inheritance
  • polymorphism 多态性
  • Abstraction
  • Encapsulation 封装

🪕 2. The Factory Method Pattern


🪕 3. The Abstract Factory pattern


🪕 4. The Builder Pattern


🪕 5. The Prototype Pattern


🪕 6. The Singleton Pattern


  • excalidraw.com:

excalidraw java

deployment-flow

api-gateway

  • 网关 API 本质上是 BFF 模式的变体。它还提供了微服务和客户端之间的附加层。但它不是单一的入口点,而是为每个客户机引入了多个网关。
  • 使用 BFF,您可以添加一个为每个客户机的需求量身打造的 API,从而消除了由于将它们都放在一个地方而导致的大量膨胀。

bff

  • 对于内部通信,一些最流行的模式包括 REST、gRPC、messagebroker 或远程过程调用。
  • 在安全性方面,访问控制列表(ACL)可以用于每个微服务或每个网关,也可以作为独立的微服务(或者根本不使用)。

Golang tech-stack

  • 微服务框架

    • go-micro
    • go-kit
  • 网关

    • kong
    • nginx +lua
    • traefik
    • apisix
  • 服务注册和发现

    • consul
    • etcd
    • zookeeper
  • 配置中心

    • Apollo
    • Nacos
  • 服务治理

    • 断路器:hystrix-go
    • 流量控制:sentinel-golang 从限流、流量整形、熔断降级、系统负载保护等多个维度来帮助您保障微服务的稳定性。
  • 链路监控: zipkin,pinpoint,skywalking,jaeger
  • 日志、业务、系统监控:

    • prometheus
  • ELK
  • CI/CD: Jenkens, drone

Java tech-stack

  • Spring Cloud 是在 Spring 基础上构建的,它后面有 2 大公司支撑,Pivotal 和 Netfix 的技术支持。它的核心就是Netflix贡献的源码,也是这家公司构建了整套微服务体系,才使得微服务架构逐渐流行开来,所以说Netflix在微服务上的贡献是巨大的。
  • Spring Cloud

    Spring Cloud 是在 Spring 基础上构建的,它后面有 2 大公司支撑,Pivotal 和 Netfix 的技术支持。它的核心就是 Netflix 贡献的源码,也是这家公司构建了整套微服务体系,才使得微服务架构逐渐流行开来,所以说 Netflix 在微服务上的贡献是巨大的。

  • Pivotal 的 SpingCloud 框架

    Spring Cloud ,这个是 Pivotal 集成了 Netfix,或者重新改写了它的框架。

    Spring是一个全家桶,Spring Cloud 也是一个全家桶,它由很多技术框架组合而成:

    • 服务治理服务注册和发现:Netflix Eureka 当然我们也有其他的选择,比如 consul,etcd,zookeeper 等断路器:Hystrix 调用端负载均衡:RibbonREST 客户端:Feign
    • 网关 API 网关:Zuul 当然我们也可以选择其他的,比如 Spring Cloud Gateway,kong,nginx+lua,apisix 等
    • 分布式链路监控 Spring Cloud Sleuth:埋点和发送数据当然还有其他的比如 zipkin,pinpoint,skywalking,jaeger 等
    • 消息组件 Spring Cloud StreamSpirng Cloud Bus
    • 消息中间件的其他软件:RocketMQ,Kafka,RabbitMQ
    • 配置中心 Spring Cloud Config 配置中心可以有其他的替代,比如 Apollo,Nacos 等
    • 安全控制 Spring Cloud Security

    https://spring.io/projects/spring-cloud 这个地址列出了 springcloud 各种框架。