渣渣兔 发表于 2025-4-1 05:16:57

设置驱动的微服务:架构灵活性的新篇章

https://i-blog.csdnimg.cn/direct/e56c2081ab904406b2ffb9df1f470c72.png
在快速变革的业务环境中,微服务架构的灵活性成为了系统筹划的核心要求。设置化策略允许系统活动通过外部设置来调解,而不是硬编码在应用程序中,从而进步了系统的适应性和可维护性。
   肖哥弹架构 跟各人“弹弹” 代码筹划技巧,需要代码关注
欢迎 点赞,关注,评论。
关注公号Solomon肖哥弹架构获取更多出色内容
汗青热门文章



[*]依靠倒置原则:付出网关筹划应用案例
[*]Holder模式(Holder Pattern):公司员工权限管理系统实战案例分析
[*]一个项目代码讲清楚DO/PO/BO/AO/E/DTO/DAO/ POJO/VO
[*]写代码总被Dis:5个项目案例带你把握SOLID技巧,代码有架构风格
[*]里氏替换原则在金融交易系统中的实践,再不懂你咬我
1、设置化的核心理念

设置化是一种筹划原则,它将系统活动与代码分离,使得系统可以在不修改代码的环境下,通过改变设置来适应不同的运行时需求。
远程设置化实现的标准图
https://i-blog.csdnimg.cn/direct/dde5a588d7fb431fa18b354de2d9861c.png


[*]应用服务:代表微服务架构中的一个服务实例,它需要读取设置来执行其功能。
[*]设置存储:存储设置信息的地方,可以是文件系统、数据库或专门的设置管理系统。
[*]设置服务器:提供设置信息的中央折务,通常通过API来访问设置。
[*]设置客户端监听器:在应用服务中运行的组件,用于监听设置变更并通知应用服务举行相应的调解。
[*]管理员/自动化工具:代表设置更新的来源,可以是系统管理员或自动化的设置管理工具。
当地设置化实现的标准图
https://i-blog.csdnimg.cn/direct/dc6c5dde60114804a1d502fc9211ae6b.png


[*]应用服务:代表微服务架构中的服务实例,它从当地设置文件中读取设置信息以执行其功能。
[*]设置文件:存储设置信息的文件,如application.yml、application.properties或其他格式的设置文件。
[*]开辟职员:代表设置更新的来源,通常是开辟职员或运维职员,他们更新设置以适应系统需求的变革。
在设置化筹划原则中,"活动"与"代码"分离的含义是:


[*]分离:系统的活动或功能体现不是硬编码在源代码中,而是可以通过外部设置来界说或修改。这意味着可以在不修改代码的环境下,通过更改设置来调解系统的活动。
[*]灵活性:通过外部设置来控制活动,系统可以更轻易地适应变革,如环境变革、用户偏好或业务规则的更新。
[*]可维护性:当系统的活动需要更新或修复时,可以简朴地通过更新设置来实现,而不必深入代码逻辑,这简化了维护工作。
[*]扩展性:新的功能或活动可以通过添加或修改设置来引入,而不需要对现有代码举行大规模更改。
设置化在系统中的重要性


[*]即时调解:快速相应业务变革,即时调解系统活动。
[*]环境适应性:简化摆设流程,确保应用在不同环境的一致性体现。
[*]风险降低:减少因代码更改引入错误的风险。
2、设置化的实现策略



[*]外部设置源:利用外部设置文件或设置管理工具来存储设置信息。
[*]设置监听:应用程序可以大概监听设置变更并动态更新活动。
[*]设置管理工具:利用如Spring Cloud Config等工具实现会合式设置管理。
3、设置化的挑战



[*]设置管理复杂性:随着设置项的增多,管理设置的复杂性也随之增长。
[*]设置一致性:确保全部服务实例利用一致的设置状态。
4、设置化利用场景

适用于需要快速适应市场变革、频仍更新设置以相应业务需求的微服务系统。
5、设置化案例

5.1 当地化设置案例

在当地化设置中,每个服务管理自己的设置文件,这些设置文件通常与服务的代码库一起版本控制。以下是一个利用Spring Boot举行当地设置的:
// application.yml
server:
port: 8080

my:
service:
    feature-toggle: true
    timeout: 2000

@Component
public class LocalConfigService {

    @Value("${my.service.feature-toggle}")
    private boolean featureToggle;

    @Value("${my.service.timeout}")
    private int timeout;

    // 省略getter和setter方法
}
在这个案例中,application.yml 文件包罗了服务的设置信息。LocalConfigService 类利用 @Value 注解注入设置值。
5.2设置中央化案例

设置中央化通常利用一个会合的设置服务来管理全部服务的设置。Spring Cloud Config是一个盛行的选择。以下是一个利用Spring Cloud Config Server和Client的案例:
设置服务器(Config Server)

@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {

    public static void main(String[] args) {
      SpringApplication.run(ConfigServerApplication.class, args);
    }
}
设置文件


[*]bootstrap.yml 或 bootstrap.properties(取决于利用的是YAML还是properties格式):
    server:
      port: 8888

    spring:
      cloud:
      config:
          server:
            git:
            uri: https://github.com/yourusername/your-config-repo.git # 配置仓库的URI
            clone-on-start: true # 启动时是否自动克隆配置仓库
            search-paths: config-repo # 配置仓库中配置文件的相对路径
这个设置文件告诉设置服务器从那里获取设置信息。在这个例子中,设置信息存储在GitHub上的一个仓库中。
设置客户端(Config Client)

@SpringBootApplication
@EnableConfigClient
@RefreshScope
public class MicroserviceApplication {

    public static void main(String[] args) {
      SpringApplication.run(MicroserviceApplication.class, args);
    }

    @Value("${my.service.feature-toggle}")
    private boolean featureToggle;

    @Value("${my.service.timeout}")
    private int timeout;

    // 配置刷新监听器
    @Configuration
    @RefreshScope
    public class ConfigUpdateListener {

      @Value("${my.service.feature-toggle}")
      private boolean currentFeatureToggle;

      @Value("${my.service.timeout}")
      private int currentTimeout;

      @RefreshScope
      public void onRefresh(@Nullable Boolean featureToggle, @Nullable Integer timeout) {
            if (featureToggle != null) {
                currentFeatureToggle = featureToggle;
            }
            if (timeout != null) {
                currentTimeout = timeout;
            }
            // 处理配置更新逻辑
      }
    }

    // 省略getter和setter方法
}
在这个案例中,ConfigServerApplication 充当设置服务器,提供设置信息。MicroserviceApplication 是设置客户端,利用 @EnableConfigClient 和 @RefreshScope 注解来从设置服务器获取设置,并监听设置的变更。
客户端需要设置bootstrap.yml或bootstrap.properties文件,以指向设置服务器:
spring:
cloud:
    config:
      uri: http://localhost:8888 # 配置服务器的URL
这样,设置客户端就可以从设置服务器获取设置信息了。
参考开源框架



[*]Spring Cloud Config:提供会合式设置管理,支持设置的版本控制和动态刷新。
[*]Consul by HashiCorp:提供服务发现和动态设置管理。
总结

设置化是微服务架构中进步系统灵活性的关键策略。通过允许系统活动通过设置而非代码来改变,我们可以快速适应业务需求的变革,降低摆设风险,并简化系统维护。只管设置管理带来了新的挑战,但利用当代设置管理工具和框架可以有效应对这些挑战,实现系统的高效运维。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 设置驱动的微服务:架构灵活性的新篇章