网络

作者: ttyttytty | 来源:发表于2021-05-29 11:39 被阅读0次

client

  • client=鉴权信息+通信配置(超时等等)

  • rest api都没有指明用户信息,是怎么区分用户的? 端侧通过userInterceptor,上传用户信息的

  • 附件上传
    有多个附件字段
    附件列表or单个字段 (field.getType()==String.class or )
    附件数量上限
    按字段压缩,list类型压缩进一个压缩包? 否 每个附件一个包(压缩时间-uploadId.zip)
    逐个文件 上传?是 直接上传压缩包和压缩包的json描述文件

  • 上传到云端,怎么区分哪个文件是哪个字段的? 将附件的上传地址填充到元数据描述中

Resultful API

  • HTTP基础:Request = ReqHeaders +(ReqBody);Respone……
  • android Restful:
  • 编不编码看消息定义
  • JOSNArray格式,重新定义包List对象

1.请求参数形式


请求参数形式

1.1.@Query

    @POST("agreementservice/user")
    Observable<BaseResp> signAgreement(@Query("nsp_svc") String nspSvc,
                                       @Query("access_token") String accessToken,
                                       @Query("request") String request);
不可编码
  public Observable<BaseResp> signAgreement(String accessToken, List<Signature> signInfo) {
        SignRequestBody signRequestBody = new SignRequestBody(signInfo);
        Observable<BaseResp> observable = privacyApi.signAgreement(NSP_SVC_SIGN,  accessToken, JSON.toJSONString(signRequestBody));
        return observable.compose(new DefaultTransformer<BaseResp>());
    }

1.2.@Body

@POST("agreementservice/user")
Observable<BaseResp> signAgreement(@Body RequestBody signRequest  );

 public Observable<BaseResp> signAgreement(String accessToken, List<Signature\> signInfo) {
        SignRequestBody signRequestBody = new SignRequestBody(signInfo);
        HashMap<String, String> stringStringHashMap = new HashMap<>();
        stringStringHashMap.put("nsp_svc", NSP_SVC_SIGN);
        stringStringHashMap.put("access_token", URLEncoder.encode(accessToken));
        stringStringHashMap.put("request", URLEncoder.encode(JSON.toJSONString(signRequestBody)));
        Observable<BaseResp> observable = privacyApi.signAgreement(getRequestBody(stringStringHashMap
        ));
 
        return observable.compose(new DefaultTransformer<BaseResp>());
    }
    public RequestBody getRequestBody(HashMap<String, String> hashMap) {
        StringBuffer data = new StringBuffer();
        if (hashMap != null && hashMap.size() > 0) {
            Iterator iter = hashMap.entrySet().iterator();
            while (iter.hasNext()) {
                Map.Entry entry = (Map.Entry) iter.next();
                Object key = entry.getKey();
                Object val = entry.getValue();
                data.append(key).append("=").append(val).append("&");
            }
        }
        String jso = data.substring(0, data.length() - 1);
        RequestBody requestBody =
                RequestBody.create(MediaType.parse("application/x-www-form-urlencoded; charset=utf-8"), jso);

        return requestBody;
    }

用编码,输入同@query
1.3.

@POST("agreementservice/user")
@FormUrlEncoded
Observable<BaseResp> signAgreement(@Field("nsp_svc") String nspSvc,
                                       @Field("access_token") String accessToken,
                                       @Field("request") String request);  (@FieldMap map )                                   
自动编码

2.请求json格式


请求json格式

2.1.@Body

@POST("agreementservice/user")
Observable<BaseResp> signAgreement(@Body SignRequest signRequest);
不url编码

okhttp&retorfit

  • useragent:调用者标识
  • call同步;Onservable异步
  • 拦截器(&ApiClient)
    怎么处理统一的header、封装成Resp exect().body()
    处理鉴权(usersession)哪些Api需要加session?处理加入退出本地持久化session?怎么刷新校验? 超期的expireAT,修改本地手机时间怎么办
  • Factory的角色是什么?
    -Chain如何解析出response和request?(找个拦截器看看)

后端名词解释

  • Nginx:一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,其特点是占有内存少,并发能力强。Nginx 以事件驱动的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。

  • Redis:内存数据库,可以做消息队列

  • RDS:阿里的数据库组件

  • CDM:云数据迁移(Cloud Data Migration, 简称CDM),是一种高效、易用的批量数据迁移服务。例如,后台桶里的数据迁移到ES,展示在页面数据表里:cdm任务将全量数据-》kafka-》flink(分布式流式数据处理框架)作业消费kafka将数据-》ES

  • 对于海量数据处理,常见的一些方案,大方向就是负载均衡、消息队列和缓存系统、CDN内容分发。

    • 负载均衡:协调多台服务器应对网络连接和请求的压力,各种调度策略
    • 消息队列:异步处理机制,避免耗时的等待。Kafka、RabbitMQ
    • 缓存系统:加速数据读写,Redis、Memcached
    • 数据库:分库、分表,借助数据库中间件实现关联查询、主键避免重复、分页查询和事务一致性等功能。分布式关系型数据库、时序数据库
  • Apache Flink:流处理,对实时数据进行一些预处理,处理之后再存储起来。一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。动态输入的流式数据的实时处理,延迟低,也叫实时计算,主要用于实时监控、趋势预测、实时推荐等场景。Storm、Spark Streaming、Flink

  • Apache Spark:批处理,分而治之。专为大规模数据处理而设计的快速通用的计算引擎。海量静态数据的非实时处理,延迟比较高,也叫离线计算,主要用于离线报表、历史数据汇总等场景。Hadoop MapReduce、Spark

  • DLI:数据湖探索服务,是完全兼容Apache Spark和Apache Flink生态, Serverless大数据计算分析服务,企业仅需使用SQL或程序就可轻松完成异构数据源的批处理、流处理、内存计算、机器学习等,挖掘和探索数据价值。
    在开发中,如果数据源是DLI,则首先推荐DLI Spark;如果数据源是MRS集群中的hive,则首先推荐MRS Spark(简单配置数据连接后就可以直接访问hive)。

  • Docker:虚拟技术的一种,可以解决在不同机器上使用同一个软件的依赖、环境、配置问题。

    • 虚拟机实现一个新系统,占用的资源较多。容器是一个被包装的进程,启动也快。进程接触到的文件系统和网络接口都是虚拟的,与本机的文件系统和网络接口是隔离的,因此需要定义容器与物理机的端口映射(map)。
    • 站在 Docker 的角度,软件就是容器的组合:业务逻辑容器、数据库容器、储存容器、队列容器......Docker 使得软件可以拆分成若干个标准化容器,然后像搭积木一样组合起来。这正是微服务(microservices)的思想:软件把任务外包出去,让各种外部服务完成这些任务,软件本身只是底层服务的调度中心和组装层。
    • how:将应用程序、依赖、环境,配置文件打包入image文件。Docker根据image文件生成一个个实例。image 文件是通用的,一台机器的 image 文件拷贝到另一台机器,照样可以使用。image 文件生成的容器实例,本身也是一个文件,称为容器文件。也就是说,一旦容器生成,就会同时存在两个文件: image 文件和容器文件。而且关闭容器并不会删除容器文件,只是容器停止运行而已。Dockerfile 文件。它是一个文本文件,用来配置 image。Docker 根据 该文件生成二进制的 image 文件。
  • k8s:K8s是Google开源的容器集群管理系统。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。

  • Eureka:Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。 SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。

    • 一般提到的“服务化”更多指的是对RPC的管理。服务化一般关注服务注册,服务协调,服务可用性,服务通讯协议和内容交换等。
  • 分布式:一群独立计算机集合共同对外提供服务,但是对于系统的用户来说,就像是一台计算机在提供服务一样。

    • 拿电商网站来说,我们一般把一个电商网站横向拆分成商品模块、订单模块、购物车模块、消息模块、支付模块等。然后我们把不同的模块部署到不同的机器上,各个模块之间通过远程服务调用(RPC)等方式进行通信。以一个分布式的系统对外提供服务。
  • TPS :一秒能完整搞定多少次用户操作来回(一次用户操作坑需要多次C/S服务接口的来回交互);QPS :一秒能完成多少次接口的交互。TPS= N* QPS?

  • APIGateway:云平台内部的一些对外开放的模块中,统一一个认证、鉴权模式、统一的大数据统计、统一的健康检查模式等。OAuth 2.0 JWT

    • 服务接口所在分为网关opengw和分布式网关apigw两种,对于调用方而言,只有请求URL的不同
  • Scope: 授权作用域,对于用户级的服务,一般需要定义。

    • 权限和Scope是什么 关系? 一个Scope可以包含多个权限;一个权限可以给多个Scope依赖。

相关文章

  • 网络!网络!

    ...

  • 网络,网络

    敲击键盘,滴滴答答,行云流水,我和你在无形的世界中产生了存在着的联系。落日,似乎看不到,看到的,只是手中的那块屏幕...

  • 网络?网络!

    网络是一片浩瀚的海,在网络初建之时,如一片处女地,在上面初生了各种各样文化的苗,虽星星点点却也清新。或许是审...

  • 网络—网络婴儿

    在餐馆你可能看到,专注的母亲盯着手机,而在她臂弯里的儿童却不知所措;在家里,母亲在厨房里忙碌,而婴儿在拨弄着平板自...

  • 网络啊网络

    下午,天突降大雨。 其时我正打开电脑在听音乐,声音戛然而止,我以为是网络卡住了,就照样一边忙碌着一边等待音乐声再次...

  • 网络-网络层

    网络层 网络层数据包(IP数据包,Packet)由首部、数据2部分组成数据:很多时候是由传输层传递下来的数据段(S...

  • 测试网络

    测试网络测试网络测试网络测试网络测试网络测试网络

  • 网络 和网络笔记

    ifconfig -a 查看物理网卡硬件地址 比如 ether 00:0c:29:ab:6e:72 更改M...

  • 【网络】集群网络排错

    前几天实验室网络抽风,卡的要死要死的,做实验也做的要死要死的(跟十几台小集群在一个屋里通宵,这种酸爽简直终身难忘)...

  • Android网络——网络状态

    1. 判断网络是否可用 2. 判断网络类型

网友评论

      本文标题:网络

      本文链接:https://www.haomeiwen.com/subject/yeuysltx.html