前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2019-05-27 JAVA技术栈:微服务的配置,服务发现,负载均衡框架介绍

2019-05-27 JAVA技术栈:微服务的配置,服务发现,负载均衡框架介绍

作者头像
Albert陈凯
发布2019-05-31 10:11:32
7140
发布2019-05-31 10:11:32
举报
文章被收录于专栏:Albert陈凯Albert陈凯

Microservices for Java Developers: Configuration, Service Discovery and Load Balancing

原文地址:

https://www.javacodegeeks.com/2019/05/microservices-configuration-service-discovery-load-balancing.html?utm_source=sendpulse&utm_medium=push&utm_campaign=1376786

作者介绍:

About Andrey Redko

Andriy是一位有良好基础的软件开发人员,拥有超过12年的使用Java / EE,C#/ .NET,C ++,Groovy,Ruby,函数式编程(Scala),数据库(MySQL,PostgreSQL,Oracle)和NoSQL解决方案的实践经验( MongoDB,Redis)。

1.配置,服务发现和负载平衡 - 简介

在本教程的这一部分中,我们将讨论三个主要主题:配置,服务发现和负载平衡。

我们的目标是了解基本的基本概念,而不是涵盖所有可用的选项。

Table Of Contents

Table Of Contents

  1. Introduction
  2. Configuration 2.1. Dynamic Configuration 2.2. Feature Flags 2.3. Spring Cloud Config 2.4. Archaius
  3. Service Discovery 3.1. JGroups 3.2. Atomix 3.3. Eureka 3.4. Zookeeper 3.5. Etcd 3.6. Consul
  4. Load Balancing 4.1. nginx 4.2. HAProxy 4.3. Synapse 4.4. Traefik 4.5. Envoy 4.6. Ribbon
  5. Cloud
  6. Conclusions
  7. What’s next

2.配置 您的每个微服务的配置很可能会因环境而异。它完全没问题,但提出了一个问题:如何告诉有问题的微服务使用什么配置?

许多框架提供了不同的配置管理机制(如配置文件,配置文件,命令行选项......),但我们在这里提倡的方法是遵循十二因子应用程序方法。

十二因子应用程序将配置存储在环境变量中(通常缩写为env vars或env)。在不更改任何代码的情况下,可以在部署之间轻松更改Env变量;与配置文件不同,它们几乎没有机会被意外地检入代码仓库;与自定义配置文件或其他配置机制(如Java系统属性)不同,它们是与语言和操作系统无关的标准。 - https://12factor.net/config

环境变量仅表现出一个主要限制:它们本质上是静态的。其值的任何更改都可能需要重新启动完整的微服务。对于许多人来说这可能不是问题,但通常希望在运行时具有某种灵活性来修改服务配置。

2.1。 动态配置(Dynamic Configuration) 无需重新启动服务即可更新配置是一项非常吸引人的功能。 但是要支付的价格也很高,不是太多的框架或库提供这种透明的支持。

例如,让我们考虑动态更改数据库JDBC URL连接字符串。 不仅必须透明地重新创建基础数据源,还必须重新初始化JDBC连接池。

动态配置背后的机制实际上取决于您使用的配置管理方法(Consul,Zookeeper,Spring Cloud Config,...),但是某些框架(例如Spring Cloud)会承担更多的负担。

2.2。 功能标志(Feature Flags) 功能标记(或功能切换)不会精确地落入配置存储桶中,但它是动态更改服务或应用程序特征的一种非常强大的技术。 它们非常有用,广泛用于A / B测试,推出新功能,引入实验功能,仅举几个方面。

在Java生态系统中,FF4J可能是功能标志模式最流行的实现。 另一个图书馆是Togglz,但这些天它没有得到积极维护。 如果我们不仅仅是Java,那么值得关注的是Unleash,一个企业就绪功能可以切换服务。 它拥有令人印象深刻的SDK列表,可用于许多编程语言,包括Java。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.05.27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原文地址:
  • 作者介绍:
    • About Andrey Redko
      • Table Of Contents
      相关产品与服务
      云数据库 MySQL
      腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档