断路器 用作监控请求 是否合理 当出现异常流量 可以短路保护
具体使用方式通过切面编程 将需要监控的方法 包括controller service dao 的方法添加注解方式
然后当执行该方法时 会先进去hystrix定义的监控线程上
异步执行需监控的方法 并注册一个超时事件在 监控线程上
所以被HystrixCommand 注解的方法其实是异步执行的
思考 是否应该在网关应用上 添加hystrix 做断路器限流
的确是应该如此这样做
断路器 用作监控请求 是否合理 当出现异常流量 可以短路保护
具体使用方式通过切面编程 将需要监控的方法 包括controller service dao 的方法添加注解方式
然后当执行该方法时 会先进去hystrix定义的监控线程上
异步执行需监控的方法 并注册一个超时事件在 监控线程上
所以被HystrixCommand 注解的方法其实是异步执行的
思考 是否应该在网关应用上 添加hystrix 做断路器限流
的确是应该如此这样做
Spring Cloud Netflix Sidecar框架提供了Sidecar模式的现成解决方案。Spring Cloud Netflix Sidecar框架框架可以提供对其他非Spring Cloud技术栈的微服务的治理。比如,你可以使用Node或者Golang php 编写一个Web项目,这个服务同样可以以Sidecar模式,纳入到Spring Cloud管理中去。
类似于数据管道处理的 框架 是一个面向数据的框架
可以兼容多种现有的消息处理框架 包括kafka MQ 等 也可以处理 java 特有JMS消息 RMI Socket 等数据接入点
核心信息用Message 代表
Channel 发送信息 send 拉取信息 receive 订阅消息 subscribe
queue channel 可以缓冲消息
channel interceptor 拦截器了 说明消息处理也是过滤链模式
channel.addInterceptor(Interceptor xxx)
xml 配置说明
spring-integration 可通过xml配置消息处理链 达到代码解耦效果
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.5</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>robin.tcpip.gateway.Main</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
mainClass 指定 可执行主类
执行 mvn package 可打包
打包成runnable jar 后可直接运行 且保内包含所有依赖的jar包
zuul 网关应用分 1.X 版本 和 2.X 版本 两者相差很大
以下详细说明zuul 1.X 版本
在原始在zuul-core 包中 所有请求是通过 com.netflix.zuul.http.ZuulServlet 在 /zuul/* 下建立servlet 入口
然后在 zuulServlet的service方法中 执行 zuulRunner 去处理请求
然后不同请求路径下会使用 zuulRunner里面的不同的 filterProcessor 去处理
譬如 :
静态路由的地址 由配置文件配置的路由器处理
微服务路由地址 由ribbon的提供路由策略 RibbonRoutingFilter
所有的这些处理请求filter 其实是把请求重发到对应的地址
再把响应结果返回给网关(转发)
具体实现http请求的框架可以配置 okhttp httpClient 等
和 spring-boot 整合后
springmvc 用 org.springframework.cloud.netflix.zuul.web.ZuulController
包装了zuulServlet (servletWrapper)
还是通过springMVC去处理网关!!!
mycat配置解释
再mycat2/conf/有配置文件
server.xml 定义数据库连接 用户
schema.xml 定义 虚拟表和实体表
rule.xml 定义分库逻辑(入库)
route.xml定义查询时实体表路由配置(查询)
简单按字段值分库
<!-- 按照学校名分表 -->
<tableRule name="shardingBySchoolName">
<rule>
<columns>school_name</columns>
<algorithm>shardingBySchoolName</algorithm>
</rule>
</tableRule>
<!-- 按照学校名分表 -->
<function name="shardingBySchoolName" class="org.opencloudb.route.function.PartitionByFileMap">
<property name="mapFile">shardingBySchoolName.txt</property>
<property name="type">1</property>
<property name="defaultNode">0</property>
</function>
shardingBySchoolName.txt
爱享=0
中悦=1
DEFAULT_NODE=1
静态资源目录在 /usr/local/tomcat/webapps
配置文件在 /usr/local/tomcat/conf/server.xml
Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。
默认的静态资源文件夹 在/var/lib/jetty/webapps/下
添加默认根context:在/var/lib/jetty/webapps/下添加ROOT文件夹
然后在ROOT文件夹添加index.html
即可提供默认主页访问
当然也可把war包放到webapps下自动解压访问