单一体系风格: 所有 UI, 业务逻辑 和 数据库访问逻辑, 被一起打包成单一的应用程序, 并部署到应用服务器.
微服务架构
特点, 天然分布式, 每个组件单一原则, 通信协议基本采用 HTTP 和 JSON(这样不受开发语言限制).
微服务更加适合云应用, 因为独立和小的特点, 更容易在云上部署. Maven 可以直接输出为 docker image, 然后 DevOps 到 docker 上.
3. 的位置, 按道理不应该这么暴露, 应该都向类中的暴露方式.
mvn spring-boot:run 这个 mvn 命令, 将使用一个 Spring Boot 插件, 启动内嵌 Tomcat 服务器的应用程序.
启动后就可以使用 PostMan 来进行测试了.
我们更多的应该是使用 IaaS 的云服务, 这个云服务商只需要提供 docker 就可以, 我们可以把应用部署到 docker 上.
之后我们就要保证:
1. docker 的高可用和管理, 可以使用 K8S 对 docker 进行管理.
2. 应用程序本身的高可用, 目前来看大家都愿意去搭建,但是运维不愿意做, 我们如何能运维好我们的产品.
构建微服务需要考虑的因素:
当你正在设计微服务时,你必须考虑服务将如何被消费和它如何与外部通信.
服务间的事件处理: 你如何让你的微服务使用事件以尽量减少微服务之间的硬编码依赖关系和增加应用的弹性.
微服务需要考虑的:
1. 负载均衡, 如何能找到合适的微服务, 如果这个微服务是多实例的.
2. 断路器模式, 如何防止客户继续调用遭遇问题的微服务
3. 回退模式, 当服务调用失败时, 如何允许服务客户端尝试通过调用其他微服务的方式来执行工作
4. 仓壁模式, 微服务应用使用多个分布式资源完成工作,如何隔离这些调用, 使一个异常服务调用不会对应用程序其余部分有负面影响.
日志收集:
Deploy:
Spring Cloud 提供的功能:
Spring Cloud Config 处理应用程序配置数据:
Eureka: (https://github.com/netflix/eureka) 是一个开放源码的 Netflix 项目, Eureka 也有一个键值数据库, 可以与Spring Cloud Config 一起使用.
Spring Cloud Service Discovery
通过服务发现, 可以将消费服务的客户端从服务器部署的物理位置(IP/服务器名) 抽离出来, 服务消费者通过逻辑名称而不是物理位置调用服务器的业务逻辑, Spring Cloud 服务 发现还负责注册和注销服务实例. (可以实现负载均衡)
Spring Cloud 很大程度上集成了 Netflix 开源项目, Zuul 提供路由服务, 所有的对微服务调用都通过单一的“前门”, 有了这种集中服务调用,你可以执行标准的服务策略, 如安全授权验证, 内容过滤和路由规则 等.
Spring Stream: RabbitMQ, KAFKA, 支持异步传输
Spring Cloud Sleuth 允许你将唯一的跟踪标识集成到 HTTP 调用, 称为跟踪或关联ID, 允许你跟踪一个交易, 因为它在应用程序中不同服务之间传递.
Spring Cloud Security: 身份验证和授权框架, 基于 JavaScript Web Token(JWT) 和 OAuth2 标准.
实际上, 对于 MES 来说, 我更加倾向于 SOA 应用程序, 包括我们 local 实现的一些application 也是一样, 也还是觉得 SOA 更加合适.