/** * 挑战题测试类 * 测试微服务治理框架和云原生应用生命周期管理系统 */ public class ChallengeExampleTest { public static void main(String[] args) { System.out.println("========== 开始测试挑战题 =========="); // 测试微服务治理框架 testMicroServiceGovernance(); // 测试云原生应用生命周期管理系统 testCloudNativeLifecycleManager(); System.out.println("========== 挑战题测试完成 =========="); } /** * 测试微服务治理框架 */ private static void testMicroServiceGovernance() { System.out.println("\n1. 测试微服务治理框架:"); // 获取治理框架实例 MicroServiceGovernance governance = MicroServiceGovernance.getInstance(); // 注册服务 System.out.println("\n1.1 注册服务:"); governance.registerService("user-service", "192.168.1.101", 8080); governance.registerService("user-service", "192.168.1.102", 8080); governance.registerService("order-service", "192.168.1.201", 8081); governance.registerService("payment-service", "192.168.1.301", 8082); // 列出已注册的服务 System.out.println("\n1.2 已注册的服务:"); governance.listServices().forEach(service -> { System.out.println(service); }); // 测试服务调用(正常情况) System.out.println("\n1.3 测试服务调用(正常情况):"); for (int i = 0; i < 5; i++) { String result = governance.callService("user-service", "GET", "/api/users" + i); System.out.println("调用结果:" + result); } // 模拟服务故障 System.out.println("\n1.4 模拟服务故障:"); governance.simulateServiceFailure("user-service", "192.168.1.101", 8080, true); // 测试断路器功能 System.out.println("\n1.5 测试断路器功能:"); for (int i = 0; i < 10; i++) { try { String result = governance.callService("user-service", "GET", "/api/users/faulty" + i); System.out.println("调用结果:" + result); } catch (Exception e) { System.out.println("调用异常:" + e.getMessage()); } } // 注销服务 System.out.println("\n1.6 注销服务:"); governance.deregisterService("order-service", "192.168.1.201", 8081); System.out.println("注销后服务列表:"); governance.listServices().forEach(service -> { System.out.println(service); }); // 显示治理统计信息 System.out.println("\n1.7 治理统计信息:"); governance.printGovernanceStats(); System.out.println("\n微服务治理框架测试完成"); } /** * 测试云原生应用生命周期管理系统 */ private static void testCloudNativeLifecycleManager() { System.out.println("\n2. 测试云原生应用生命周期管理系统:"); // 获取生命周期管理器实例 CloudNativeLifecycleManager lifecycleManager = CloudNativeLifecycleManager.getInstance(); // 添加事件监听器 lifecycleManager.addEventListener(new CloudNativeLifecycleManager.LifecycleEventListener() { @Override public void onApplicationCreated(CloudNativeLifecycleManager.Application app) { System.out.println("事件:应用已创建 - ID: " + app.getId() + ", 名称: " + app.getConfig().getName()); } @Override public void onApplicationDeployed(CloudNativeLifecycleManager.Application app) { System.out.println("事件:应用已部署 - ID: " + app.getId() + ", 状态: " + app.getStatus()); } @Override public void onApplicationScaled(CloudNativeLifecycleManager.Application app, int oldReplicas, int newReplicas) { System.out.println("事件:应用已扩展 - ID: " + app.getId() + ", 从 " + oldReplicas + " 到 " + newReplicas + " 副本"); } @Override public void onApplicationUpdated(CloudNativeLifecycleManager.Application app, CloudNativeLifecycleManager.ApplicationConfig oldConfig) { System.out.println("事件:应用已更新 - ID: " + app.getId()); } @Override public void onApplicationDestroyed(String appId) { System.out.println("事件:应用已销毁 - ID: " + appId); } }); // 显示初始资源状态 System.out.println("\n2.1 初始资源状态:"); lifecycleManager.getResourceStatus().forEach((resource, amount) -> { System.out.println(resource + ": " + amount); }); // 创建应用配置 System.out.println("\n2.2 创建应用:"); CloudNativeLifecycleManager.ApplicationConfig config1 = new CloudNativeLifecycleManager.ApplicationConfig("nginx-app", "nginx:latest"); config1.setReplicas(2); config1.getEnvVars().put("ENV", "production"); config1.getResources().put("cpu", 1); config1.getResources().put("memory", 1024); config1.getPorts().add(new CloudNativeLifecycleManager.PortMapping(80, 8080, "TCP")); CloudNativeLifecycleManager.Application app1 = lifecycleManager.createApplication(config1); CloudNativeLifecycleManager.ApplicationConfig config2 = new CloudNativeLifecycleManager.ApplicationConfig("redis-app", "redis:latest"); config2.setReplicas(1); config2.getResources().put("cpu", 1); config2.getResources().put("memory", 2048); config2.getPorts().add(new CloudNativeLifecycleManager.PortMapping(6379, 6379, "TCP")); CloudNativeLifecycleManager.Application app2 = lifecycleManager.createApplication(config2); // 部署应用 System.out.println("\n2.3 部署应用:"); lifecycleManager.deployApplication(app1.getId()); lifecycleManager.deployApplication(app2.getId()); // 显示应用列表 System.out.println("\n2.4 应用列表:"); for (CloudNativeLifecycleManager.Application app : lifecycleManager.getApplications()) { System.out.println("ID: " + app.getId() + ", 名称: " + app.getConfig().getName() + ", 状态: " + app.getStatus() + ", 副本数: " + app.getPods().size()); } // 扩展应用 System.out.println("\n2.5 扩展应用:"); lifecycleManager.scaleApplication(app1.getId(), 3); // 更新应用配置 System.out.println("\n2.6 更新应用配置:"); CloudNativeLifecycleManager.ApplicationConfig updatedConfig = new CloudNativeLifecycleManager.ApplicationConfig("nginx-app-updated", "nginx:1.21"); updatedConfig.setReplicas(4); updatedConfig.getEnvVars().put("ENV", "development"); updatedConfig.getResources().put("cpu", 1); updatedConfig.getResources().put("memory", 1536); updatedConfig.getPorts().add(new CloudNativeLifecycleManager.PortMapping(80, 8081, "TCP")); lifecycleManager.updateApplication(app1.getId(), updatedConfig); // 显示更新后的应用详情 System.out.println("\n2.7 更新后的应用详情:"); CloudNativeLifecycleManager.Application updatedApp = lifecycleManager.getApplication(app1.getId()); System.out.println("ID: " + updatedApp.getId()); System.out.println("名称: " + updatedApp.getConfig().getName()); System.out.println("镜像: " + updatedApp.getConfig().getImage()); System.out.println("副本数: " + updatedApp.getPods().size()); System.out.println("状态: " + updatedApp.getStatus()); System.out.println("环境变量: " + updatedApp.getConfig().getEnvVars()); System.out.println("端口: " + updatedApp.getConfig().getPorts()); // 销毁应用 System.out.println("\n2.8 销毁应用:"); lifecycleManager.destroyApplication(app1.getId()); // 显示最终应用列表和资源状态 System.out.println("\n2.9 最终应用列表:"); for (CloudNativeLifecycleManager.Application app : lifecycleManager.getApplications()) { System.out.println("ID: " + app.getId() + ", 名称: " + app.getConfig().getName() + ", 状态: " + app.getStatus()); } System.out.println("\n2.10 最终资源状态:"); lifecycleManager.getResourceStatus().forEach((resource, amount) -> { System.out.println(resource + ": " + amount); }); System.out.println("\n云原生应用生命周期管理系统测试完成"); } }