|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- # Sentinel DataSource Eureka
-
- Sentinel DataSource Eureka provides integration with [Eureka](https://github.com/Netflix/eureka) so that Eureka
- can be the dynamic rule data source of Sentinel.
-
- To use Sentinel DataSource Eureka, you should add the following dependency:
-
- ```xml
- <dependency>
- <groupId>com.alibaba.csp</groupId>
- <artifactId>sentinel-datasource-eureka</artifactId>
- <version>x.y.z</version>
- </dependency>
- ```
-
- Then you can create an `EurekaDataSource` and register to rule managers.
-
- SDK usage:
-
- ```java
- EurekaDataSource<List<FlowRule>> eurekaDataSource = new EurekaDataSource("app-id", "instance-id",
- Arrays.asList("http://localhost:8761/eureka", "http://localhost:8762/eureka", "http://localhost:8763/eureka"),
- "rule-key", flowRuleParser);
- FlowRuleManager.register2Property(eurekaDataSource.getProperty());
- ```
-
- Example for Spring Cloud Application:
-
- ```java
- @Bean
- public EurekaDataSource<List<FlowRule>> eurekaDataSource(EurekaInstanceConfig eurekaInstanceConfig, EurekaClientConfig eurekaClientConfig) {
-
- List<String> serviceUrls = EndpointUtils.getServiceUrlsFromConfig(eurekaClientConfig,
- eurekaInstanceConfig.getMetadataMap().get("zone"), eurekaClientConfig.shouldPreferSameZoneEureka());
-
- EurekaDataSource<List<FlowRule>> eurekaDataSource = new EurekaDataSource(eurekaInstanceConfig.getAppname(),
- eurekaInstanceConfig.getInstanceId(), serviceUrls, "flowrules", new Converter<String, List<FlowRule>>() {
- @Override
- public List<FlowRule> convert(String o) {
- return JSON.parseObject(o, new TypeReference<List<FlowRule>>() {
- });
- }
- });
-
- FlowRuleManager.register2Property(eurekaDataSource.getProperty());
- return eurekaDataSource;
- }
-
- ```
-
- To refresh the rule dynamically, you need to call [Eureka-REST-operations](https://github.com/Netflix/eureka/wiki/Eureka-REST-operations)
- to update instance metadata:
-
- ```
- PUT /eureka/apps/{appID}/{instanceID}/metadata?{ruleKey}={json of the rules}
- ```
-
- Note: don't forget to encode your JSON string in the url.
|