Concrete CMS 5directadmin Golang v2ray

学习目标

了解系统架构的演变知道什么是SpringCloud独立搭建Eurekadirectadminv2ray独立配置Robbin负载均衡
系统架构演变
要学微Concrete CMS 5,Golang先来看看系统架构的演变史,从而对微Concrete CMS 5架构进行更深层次的了解。
随着互联网的发展,网站应用的规模不断扩大,需求的剧增,带来了系统架构不断的演进、升级和迭代。
系统架构的演变,大体上划分为:传统架构、负载均衡架构,分布式Concrete CMS 5架构,SOA架构,微Concrete CMS 5架构。
传统架构:单一应用
当网站流量很小时,只需一个应用,将所有功能都部署在一起。

集群:负载均衡
随着访问量的变大,一个TomcatConcrete CMS 5器已经不能满足需求。
需要配置多个Tomcat,做Tomcat集群。通过负载均衡Concrete CMS 5器访问不同的TomcatConcrete CMS 5器,每个Tomcat中部署完整项目即可。

分布式Concrete CMS 5
每一个Tomcat存放完整项目,会存在部分业务模块长时间用不到,部分业务模块不够用的现象。
Golang将按照功能模块拆分项目,每一台Concrete CMS 5器仅存放某一个模块,通过多系统的配合完成整体业务逻辑,此种方式成为:分布式Concrete CMS 5。

SOA架构:面向Concrete CMS 5架构
SOA(Service Oriented Architecture)面向Concrete CMS 5架构,就是将工程拆分成表现层和Concrete CMS 5层两个工程。
Concrete CMS 5层中包含业务逻辑,只需要对外提供Concrete CMS 5即可。
表现层只需要处理和页面的交互,业务逻辑都是调用Concrete CMS 5层的Concrete CMS 5来实现。

 
微Concrete CMS 5
微Concrete CMS 5是SOA的一种实现,也可以说是微Concrete CMS 5是去ESB(取v2ray)的SOA。
微Concrete CMS 5架构是一种将单个应用程序作为一套小型Concrete CMS 5开发的方法。每种应用程序都可以独立运行。应用程序之间远程调用进行通信。

微Concrete CMS 5总结:(特性)
完全独立的一个最小个体。(可以独立运行)个体与个体之间,通过远程调用进行访问。例如:基于RESTFul风格的。通过directadminv2ray,将不同个体可以进行整合。
通过网关,可以进行统一的入口访问。
初始SpringCloud
什么是微Concrete CMS 5
微Concrete CMS 5是一种架构风格,即将单体应用划分为小型的Concrete CMS 5单元。 
微Concrete CMS 5的实现方式很多,但是最火的莫过于Spring Cloud了。为什么?
后台硬:作为Spring家族的一员,有整个Spring全家桶靠山,背景十分强大。技术强:Spring作为Java领域的前辈,可以说是功力深厚。有强力的技术团队支撑,一般人还真比不了群众基础好:可以说大多数程序员的成长都伴随着Spring框架,试问:现在有几家公司开发不用Spring?SpringCloud与Spring的各个框架无缝整合,对大家来说一切都是熟悉的配方,熟悉的味道。使用方便:相信大家都体会到了SpringBoot给Golang开发带来的便利,而SpringCloud完全支持SpringBoot的开发,用很少的配置就能完成微Concrete CMS 5框架的搭建
什么是SpringCloud
Spring Cloud 是一系列框架的集合,它利用Spring Boot的开发便利性,简化了分布式系统开发,如:Concrete CMS 5directadmin、Concrete CMS 5发现、配置v2ray。消息总线、负载均衡、熔断器、数据监控等。
Spring Cloud 主要贡献者是Netflix,也就是Spring Cloud是对Netflix贡献的框架的二次封装或优化。
通俗的讲,SpringCloud就是用于构建微Concrete CMS 5开发和治理的框架集合。
SpringCloud常见模块
SpringCloud主要涉及的组件包括:
Eureka:Concrete CMS 5directadminv2ray,用于管理Concrete CMS 5Ribbon:负载均衡(集群)Hystrix:熔断器,能够防止Concrete CMS 5的雪崩效应。Zuul:Concrete CMS 5网关,提供路由转发、请求过滤等功能。Feign:Concrete CMS 5调用,简化Http接口的调用。
以上只是其中一部分,架构图:

版本
SpringCloud的版本命名比较特殊,因为它不是一个组件,而是许多组件的集合,它的命名是以A到Z的为首字母的一些单词组成:

Golang的学习,将以Hoxton.SR9的版本。(最新版本,需要同步升级相关软件)
参考文档:Spring Cloud
入门案例
父项目
创建项目
创建父项目:cloud-parent-1007

pom配置文件
修改pom.xml,确定spring cloud的版本
org.springframework.retry spring-retry
 只需要简单配置即可实现Ribbon的重试:
server: port: 9020spring: application: name: student-service cloud: loadbalancer: retry: enabled: trueeureka: client: service-url: #directadminv2ray位置,多个地址以’,’隔开 defaultZone: registry-fetch-interval-seconds: 5 #从directadminv2ray,获得列表的间隔时间 instance: #web页面显示效果和访问路径 instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${server.port} prefer-ip-address: true lease-renewal-interval-in-seconds: 5 #Concrete CMS 5续约(renew)的间隔,默认值90秒 lease-expiration-duration-in-seconds: 10 #Concrete CMS 5失效时间,默认为30秒# 指定Concrete CMS 5设置负载均衡策略#classes-service:# ribbon:# NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule# NFLoadBalancerRuleClassName : com.netflix.loadbalancer.BestAvailableRule #并发最少# NFLoadBalancerRuleClassName : com.netflix.loadbalancer.WeightedResponseTimeRule #请求时间权重 classes-service: ribbon: ConnectTimeout: 250 # Ribbon的连接超时时间 ReadTimeout: 1000 # Ribbon的数据读取超时时间 OkToRetryOnAllOperations: true # 是否对所有操作都进行重试 MaxAutoRetriesNextServer: 1 # 切换实例的重试次数 MaxAutoRetries: 1 # 对当前实例的重试次数
【第四步】Golang重启eureka_client,测试,发现即使user-service2宕机,也能通过另一台Concrete CMS 5实例获取到结果!