资料文献:
IKM:YonBIP技术方案-被集成方案IKM地址 视频:YonBIP技术方案-被集成方案视频讲解
某项目入BIP基本档案通过MQ与档案同步服务采用API的形式进行档案同步
方案如下图所示:

C10K问题
所谓c10k问题,指的是:服务器如何支持10k个并发连接,也就是concurrent 10000 connection(这也是c10k这个名字的由来)。由于硬件成本的大幅度降低和硬件技术的进步,如果一台服务器能够同时服务更多的客户端,那么也就意味着服务每一个客户端的成本大幅度降低。从这个角度来看,c10k问题显得非常有意义。

服务的处理能力总是有极限的,随着微服务的流行,服务和服务之间的依赖越来越强,调用关系越来越复杂,服务和服务之间的稳定性越来越重要。在遇到突发的请求量激增,恶意的用户访问,亦或请求频率过高给下游服务带来较大压力时,我们常常需要通过缓存、限流、熔断降级、负载均衡等多种方式保证服务的稳定性。其中限流是不可或缺的一环。
RabbitMQ推拉模式 消费者与消息存储方Broker一般有两种通信机制:推(PUSH)、拉(PULL)。 推模式:消息发送者将消息发送到Broker,然后Broker主动推送给订阅了该消息的消费者。 拉模式:消息发送者将消息发送到Broker上,然后由消息消费者自发的向Broker拉取消息。
解决方案: 业务处理,预算数据100条一发,再加个3秒sleep后进行业务处理。 示例代码: - <font size="4">if(queueBudget.getCount()<100){
- return;
- }else {
- // 预算模型编码 - 来源:自己建的预算模型
- map.put("cubeCode","dhcbudgetcube");
- // 预算系统模型编码 - 来源:自己建的预算系统模型
- map.put("sysCode","dhcbudgetsys");
- List<MonthBudget> data = queueBudget.getData();
- data.forEach((s)->{
- Map<String, Object> dataMap = new HashMap<>();
- dataMap.put("StartDate",s.getStartDate());
- // 必填项
- dataMap.put("EndDate",s.getEndDate());
- // 项目编号
- dataMap.put("projectCode",s.getProjectCode());
- // 项目预算科目UID
- dataMap.put("**.**ountUid",**.**ountUid());
- // 年月
- dataMap.put("month",s.getMonth());
- // 预计金额
- dataMap.put("budget",s.getBudget());
- if("3".equals(s.getType())){
- // 3为删除,待确认
- dataMap.put("type",s.getType());
- }
- dataList.add(dataMap);
- });
- map.put("data",dataList);
- TimeUnit.SECONDS.sleep(3);
- String apiDataResponse = postForEntity(OpenApiURL.PROJECT_MONTH_BUDGET_SAVE,map, String.class);
- String code = JSONObject.parseObject(apiDataResponse).getString("code");
- if("200".equals(code)){
- queueBudget.clean();
- }
- LogBusiness.logInfo("项目月别预算插入","批量进入"+queueBudget.getCount()+"条");
- }
- </font>
复制代码

|