我们正面临与微服务架构有关的性能问题。
假设有用于用户和帐户管理的微服务。其中有 api 之类的
GET /users/{id}
GET /users (arrount 6 million users)
GET /accounts/{accountId}
GET /accounts
and Other Operations on user and account
Run Code Online (Sandbox Code Playgroud)
我们还有其他微服务,用于跟踪用户活动并列出用户在上次登录时所做的所有活动。
GET /user/activity/{userId} (on an average 1000 to 10000 records)
Run Code Online (Sandbox Code Playgroud)
我们为销售和营销团队提供基于搜索条件的个人用户活动和用户信息和帐户信息的保护,
let's say search criteria is like : get all user activies who are located in colombia
Algorithm :
1)Get /users ? location = colombia
2)then for individual user Get /user/activity/{userId}
Run Code Online (Sandbox Code Playgroud)
这就像连接来自不同数据库的两个表。
它非常慢并且会产生很多性能问题。
我所想到的是通过一项工作复制其他微服务中的用户表,以确保它是最新的并且只使用一个 api
GET /user/activities?location=colombia.
Run Code Online (Sandbox Code Playgroud)
但是复制表(用户)打破了微服务架构的主要基础
有没有其他方法可以做到或支持这种类型的过滤条件,这些条件连接来自不同微服务的表。
我将设计一个RESTful API,它使用调用者提供的用户名来检查是否有任何错误(例如重复,无效字符或黑名单中列出的名称......).
API应将检查结果(有效或无效)返回给调用者,以便调用者知道他是否可以使用此用户名.
如何命名API端点?
我最初认为GET /checkUserName/{username}或者GET /isUserNameValid/{username}是我的API的好名字.但我不确定他们是否真的很好.而且我不知道如何方便别人接受我提出的名字.
GET是http方法.username是调用者提供的参数.
我读过以下两篇文章:
但似乎我的API名称不符合上述文章中描述的所有指南.
其中一条指南说
使用名词但没有动词
遵循本指南,GET /checkUserName/{username}是不合适的.因为它包含动词check.
GET /isUserNameValid/{username}也不合适.因为is是一个动词.
那么,如果我必须遵循RESTful设计的指导方针,API的最佳名称是什么?
我想不出一个不包含动词的合适名字.
我使用spring MVC和webflow来创建游戏服务器并向用户提供一些网页.事实上,对于某些游戏逻辑,javascript游戏还会在同一台服务器上对多余的服务进行多次ajax调用.虽然网页服务性能并不重要,但是宁静的服务调用需要尽可能高效(与响应时间一样高效).
对于服务的性能,使用纯JAX-RS(平针织)Web服务调用而不是弹簧开销是否会更好(因为我知道弹簧层会对性能产生负面影响)或者如果我使用弹簧它会是相同的相反,webservices框架与其他Spring系列保持集成?
谢谢!
关于 Web 开发的任何方面(html/css、数据库开发、服务器端逻辑等),都有大量信息(书籍、博客等)。即使是涵盖所有这些主题的书籍,也能让您尽快开始使用您的个人网站。在高速互联网访问和内容容易传播的时代,这些天我缺少一个很好的资源,可以提供有关如何设计易于扩展的大型 Web 应用程序的见解、最佳实践和设计指南,其特点是:
可能看起来非常广泛,但与任何建立互联网公司的人都相关,因此迟早会面临这些问题。同样,我关注的是技术架构问题,而不是如何在此处讨论的内部管理工作流程(更大规模的 Web 项目规划)。有谁知道好的资源吗?
database-design data-modeling server-side-scripting restful-architecture
我已经通过本教程(http://www.duchess-france.org/accelerator-time-series-and-prediction-with-android-cassandra-and-spark/)创建了一个加速度计 Rest API,只是为了看看端点 ( http://192.168.0.104/acceleration )本地主机服务器上的数据值。但是我遇到了“无法为retrofit2.Response创建调用适配器”的错误
但是在教程中使用了 Retrofit (< 2.0),我使用的是 Retorfit2.0 (2.1)。因此,根据更新的库进行了很少的更改。
这是我下面的AccelerometerAct.java
package accelerometer.sensor.com.acceleration;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.util.Date;
import accelerometer.sensor.com.acceleration.model.Acceleration;
import retrofit2.Retrofit;
public class AccelerometerAct extends AppCompatActivity implements SensorEventListener{
private String restURL;
private TextView acceleration;
private Button myStartButton;
private Button myStopButton;
private AccelerometerAPI accelerometerAPI;
private SensorManager sm;
private Sensor accelerometer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.accelerometer_activity); …Run Code Online (Sandbox Code Playgroud) 在Spring RESTful Web Services中,所有REST(Representational State Transfer)方法都是幂等的吗?
android ×1
api ×1
architecture ×1
java ×1
performance ×1
rest ×1
retrofit2 ×1
spring ×1
spring-rest ×1
web ×1