This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git
The following commit(s) were added to refs/heads/master by this push:
new 5c9b79f Refine service-agent.md (#6714)
5c9b79f is described below
commit 5c9b79f84bf3175c5b29baa0dded44516e0c5883
Author: Wing <[email protected]>
AuthorDate: Thu Apr 8 22:30:42 2021 +0800
Refine service-agent.md (#6714)
Co-authored-by: 吴晟 Wu Sheng <[email protected]>
---
docs/en/concepts-and-designs/service-agent.md | 44 ++++++++++++---------------
1 file changed, 19 insertions(+), 25 deletions(-)
diff --git a/docs/en/concepts-and-designs/service-agent.md
b/docs/en/concepts-and-designs/service-agent.md
index a5524e2..594c10a 100644
--- a/docs/en/concepts-and-designs/service-agent.md
+++ b/docs/en/concepts-and-designs/service-agent.md
@@ -1,39 +1,33 @@
# Service Auto Instrument Agent
-Service auto instrument agent is a subset of Language based native agents. In
this kind of agent, it is based on
-some language specific features, usually a VM based languages.
+The service auto instrument agent is a subset of language-based native agents.
This kind of agents is based on
+some language-specific features, especially those of a VM-based language.
## What does Auto Instrument mean?
-Many users know these agents from hearing
-`They say don't need to change any single line of codes`, SkyWalking used to
put these words in our readme page too.
-But actually, it is right and wrong. For end user, **YES**, they don't need to
change codes, at least for most cases.
-But also **NO**, the codes are still changed by agent, usually called
`manipulate codes at runtime`. Underlying, it is just
-auto instrument agent including codes about how to change codes through VM
interface, such as change class in Java through
+Many users learned about these agents when they first heard that "Not a single
line of code has to be changed". SkyWalking used to mention this in its readme
page as well.
+However, this does not reflect the full picture. For end users, it is true
that they no longer have to modify their codes in most cases.
+But it is important to understand that the codes are in fact still modified by
the agent, which is usually known as "runtime code manipulation". The
underlying logic is that the
+auto instrument agent uses the VM interface for code modification to
dynamically add in the instrument code, such as modifying the class in Java
through
`javaagent premain`.
-Also, we said that the most auto instrument agents are VM based, but actually,
you can build a tool at compiling time, rather than
+In fact, although the SkyWalking team has mentioned that most auto instrument
agents are VM-based, you may build such tools during compiling time rather than
runtime.
-## What are limits?
-Auto instrument is so cool, also you can create those in compiling time, that
you don't depend on VM features, then is there
-any limit?
+## What are the limitations?
+Auto instrument is very helpful, as you may perform auto instrument during
compiling time, without having to depend on VM features. But there are also
certain limitations that come with it:
-The answer is definitely **YES**. And they are:
-- **In process propagation possible in most cases**. In many high level
languages, they are used to build business system,
-such as Java and .NET. Most codes of business logic are running in the same
thread for per request, which make the propagation
-could be based on thread Id, and stack module to make sure the context is safe.
+- **Higher possibility of in-process propagation in many cases**. Many
high-level languages, such as Java and .NET, are used for building business
systems.
+ Most business logic codes run in the same thread for each request, which
causes propagation to be based on thread ID, in order for the stack module to
make sure that the context is safe.
-- **Just effect frameworks or libraries**. Because of the changing codes by
agents, it also means the codes are already known
-by agent plugin developers. So, there is always a supported list in this kind
of probes.
-Like [SkyWalking Java agent supported
list](../setup/service-agent/java-agent/Supported-list.md).
+- **Only works in certain frameworks or libraries**. Since the agents are
responsible for modifying the codes during runtime, the codes are already known
+to the agent plugin developers. There is usually a list of frameworks or
libraries supported by this kind of probes.
+For example, see the [SkyWalking Java agent supported
list](../setup/service-agent/java-agent/Supported-list.md).
-- **Across thread can't be supported all the time**. Like we said about **in
process propagation**, most codes
-run in a single thread per request, especially business codes. But in some
other scenarios, they do things in different threads, such as
-job assignment, task pool or batch process. Or some languages provide
coroutine or similar thing like `Goroutine`, then
-developer could run async process with low payload, even been encouraged. In
those cases, auto instrument will face problems.
+- **Cross-thread operations are not always supported**. Like what is mentioned
above regarding in-process propagation, most codes (especially business codes)
+run in a single thread per request. But in some other cases, they operate
across different threads, such as assigning tasks to other threads, task pools
or batch processes. Some languages may even provide coroutine or similar
components like `Goroutine`, which allows developers to run async process with
low payload. In such cases, auto instrument will face problems.
-So, no mystery for auto instrument, in short words, agent developers write an
activation to make
-instrument codes work you. That is all.
+So, there's nothing mysterious about auto instrument. In short, agent
developers write an activation script to make
+instrument codes work for you. That's it!
## What is next?
-If you want to learn about manual instrument libs in SkyWalking, see [Manual
instrument SDK](manual-sdk.md) section.
+If you want to learn about manual instrument libs in SkyWalking, see the
[Manual instrument SDK](manual-sdk.md) section.