Ribbon and Nacos

Ribbon 负载均衡

负载均衡原理

Ribbon 源码。

  1. LoadBalancerInterceptor 负载均衡拦截器拦截 HTTP 请求
  2. RibbonLoadBalancerClient 获取url中的服务id(hostname,即前面所说的user-service),交给 DynamicServerListLoadBalancer 来获取该服务id对应的服务列表
  3. DynamicServerListLoadBalancer 到 Eureka 获取对应的服务列表,通过 IRule 接口对应的规则来获得负载均衡选择到的服务
  4. 返回给 RibbonLoadBalancerClient 进行请求,返回结果
阅读更多
服务注册与服务发现

服务拆分

服务拆分的注意事项

根据功能模块进行服务拆分,随着扩展可能会继续拆分

阅读更多
Micro-Service Overview

我们为什么需要微服务

微服务技术是为了应对随着程序规模的扩大和功能的增多,代码的管理难度、可维护性、鲁棒性不断下降而产生的一个因素,其核心的技术就是通过将一个大的、耦合程度高的服务集合拆分成一个个具有独立功能的服务模块独立应用(即一个个Springboot应用),让每个服务之间进行相互通信和发现来进行服务之间的调用。在微服务架构中通常会包括以下的一些组件和中间件:

阅读更多
K8s Introduction

应用部署方式演变

  1. 传统部署:直接部署在物理机上,简单,不需要要其他技术参与,但是不能够为应用程序资源定义边界
  2. 虚拟机部署:程序环境之间不会相互产生影响,提供一定程度的安全性;但是增加了操作系统,浪费了部分资源
  3. 容器化部署:保证每个容器拥有自己的文件系统、CPU、内存、进程空间等。运行应用程序所需要的资源都被容器包装,并和底层基础架构解藕。可以跨云服务商,跨Linux操作系统发行版进行部署
阅读更多
NoSQL数据库介绍

键值数据库

存什么

键值数据库(key-value store)是一张简单的哈希表,主要用在所有数据库访问均通过主键(primary key)来操作的情况下。

阅读更多
软件构造

概述

[SWEBOK2004] 将软件构造定义为:通过编码、验证、单元测试、集成测试和调试等工作的结合,生产可工作的、有意义的软件的详细创建过程。

阅读更多
软件测试

什么是软件测试

软件测试是软件质量保障的方法之一,是广泛意义上的“验证与确认”的一部分,验证与确认常被简称为“V&V”,其目的如下:

阅读更多
面向对象的信息隐藏

面向对象方法中需要做的两点:

  1. 封装类的职责,隐藏职责的实现
  2. 预计将会发生的变更,抽象它的接口,隐藏它的内部机制
阅读更多
面向对象的模块化

面向对象中的模块

模块化是消除软件复杂度的一个重要方法,它将一个复杂系统分解为若干个代码片段,每个代码片段完成一个功能,并且包含完成这个功能所需要的信息。每个代码片段相对独立,这样能够提高可维护性。在面向对象方法中,代码片段可以是模块,也可以是方法,但更重要的是类,整个类的所有代码联合起来构成独立的代码片段。

阅读更多
模块化与信息隐藏

结构化的模块化

耦合

定义:耦合描述的是两个模块之间的关系的复杂程度。根据其耦合性的高低可以依次分为:内容耦合、公共耦合、重复耦合、控制耦合、印记耦合、数据耦合。模块耦合性越高,模块的划分越差,越不利于软件的变更和复用。(下表的耦合性从高到低排列)

阅读更多