道君 <[email protected]> 于2020年7月16日周四 上午10:24写道:

> Hi
> Thanks for reply.
>
> About the log, I am considering that define `Logger` and `LogFactory` apis
> in `data-carrier` and implements them in the `agent-core` and inject
> `LoggerFactory` into `data-carrier`’s `LogManager`.
> If it is ok, I will do it.
>

Hi
Good to me.
Just please renamed them to DataCarrier.EventListener and
DataCarrier.EventListenerFactory to avoid naming duplications.


Sheng Wu 吴晟
Twitter, wusheng1108


>
> Thanks.
>
> Dao Jun 道君
> Alibaba-inc, tjm
>
> > 在 2020年7月15日,下午11:57,Sheng Wu <[email protected]> 写道:
> >
> > 道君 <[email protected]> 于2020年7月14日周二 下午7:21写道:
> >
> >> Hi
> >> Thanks for reply.
> >>
> >> I am sure that I don’t violate anything from the IP law. I just had read
> >> the source code and totally different.
> >>
> >
> > Thanks for making this clear.
> >
> >>
> >> I  agreed about add `inspired by RocketMQ` in the main entrance class
> >> comment and I will do that.
> >>
> >> About the code:
> >> I will add code in `apm-datacarrier` module and import dependency
> >> `protostuff`.  Implements QueueBuffer interface, when a message to add,
> >> serialize it and save to file.
> >> When agent shutdown, files will be deleted. I don’t want to implements
> >> file recovery, because it’s useless in k8s.
> >>
> >
> > Good to me.
> >
> >
> >>
> >> But there is one question:
> >> How could I use log in the module? Logging is in the `agent-core`
> module,
> >> and `agent-core` depend on `data-carrier`.
> >>
> >
> > DataCarrier#setLoggerFactory would be a good idea. Then you could inject
> > the agent logger factory into it.
> >
> >
> >> Any questions, reply message for detail.
> >> Thanks.
> >>
> >> Dao Jun 道君
> >> Alibaba-inc, tjm
> >>
> >>
> >>> 在 2020年7月14日,下午5:23,Sheng Wu <[email protected]> 写道:
> >>>
> >>> 道君 <[email protected]> 于2020年7月14日周二 下午5:19写道:
> >>>
> >>>> Hi
> >>>> Thanks for reply.
> >>>>
> >>>> First, what mean about `inspired`:
> >>>> It means I had read their source code then I know how a MQ file
> storage
> >>>> works, but, I think them not suitable for application agent but
> suitable
> >>>> for broker, because of it use very large direct buffer and too
> complex.
> >> So
> >>>> I redesign and simplify and code with my own. No source code copy,
> >> totally
> >>>> different from them, just learn from them.
> >>>>
> >>>
> >>> This is good to know. But please add `inspired by RocketMQ` on the main
> >>> entrance class comment. We should show respect to the original author,
> >> even
> >>> we don't copy anything from them.
> >>> For MetaQ, we can't say it, as it is open to you only, we can't know
> what
> >>> happens inside. Just make sure you don't violate anything from the IP
> law
> >>> perspective, as you are from Alibaba team, so this would be good for
> both
> >>> of us.
> >>>
> >>>
> >>>>
> >>>> Second,  k8s limited perf of disk:
> >>>> I async flush channel buffer to disk, so, it will not effect to write,
> >>>> only effect to read(in channel mode).
> >>>>
> >>>
> >>> My point is, this feature is optional, and the default is OFF.
> >>>
> >>>
> >>>>
> >>>>
> >>>> Third, read data from DataCarrier:
> >>>> I don’t test the case, file storage don’t care about the class
> instance,
> >>>> only bytes. I think we can choose a high perf object serialize util to
> >>>> serialize object to bytes. I think protostuff is good.
> >>>>
> >>>
> >>> This is about where do you plan to add the codes into the agent. Could
> >> you
> >>> explain this more clear?
> >>>
> >>>
> >>>>
> >>>> Any questions, reply mail for detail.
> >>>> Thanks.
> >>>>
> >>>> Dao Jun 道君
> >>>> Alibaba-inc, tjm
> >>>>
> >>>>
> >>>>> 在 2020年7月14日,下午4:44,Sheng Wu <[email protected]> 写道:
> >>>>>
> >>>>> Hi
> >>>>>
> >>>>> Inline
> >>>>>
> >>>>>
> >>>>> xkz <[email protected]> 于2020年7月14日周二 下午3:32写道:
> >>>>>
> >>>>>> Hi
> >>>>>> Thanks for Sheng Wu’s reply. Do you mean avoiding unlimited memory
> >>>>>> increasing by saying 'because we need to keep memory safe'?
> >>>>>>
> >>>>>> Since we can not use google’s products in China, I try to describe
> my
> >>>>>> design in detail in this email. Sorry about this.
> >>>>>> The file storage I said was inspired by RoketMQ and
> MetaQ(Alibaba-inc
> >>>>>> internal project).
> >>>>>>
> >>>>>
> >>>>> Please define `Inspired`. Because
> >>>>> 1. If you have copied some codes from RocketMQ, we need to indicate
> >> them
> >>>>> and update LICENSE to describe we did.
> >>>>> 2. At the same time, if codes are from MetaQ, we need Alibaba SGA
> about
> >>>>> those codes, because those are codes owned by a company and not
> >>>>> open-sourced.
> >>>>> This is very important to us. Please make sure there is no IP issue.
> >>>>>
> >>>>>
> >>>>>>
> >>>>>> First, the read/write mode:
> >>>>>> I will use a direct buffer pool, default 100M per buffer and pool
> size
> >>>> is
> >>>>>> 2. When a file is created(called StoreFile), take a direct buffer
> from
> >>>> pool
> >>>>>> and set as an instance field, write message in the buffer, async
> write
> >>>>>> buffer to file-channel and async flush buffer to disk.
> >>>>>> Read message has two modes: in channel or in direct buffer. When
> >>>> creating
> >>>>>> a new file, if take a buffer from buffer pool failed(buffer pool
> >> return
> >>>>>> null), it will return previous file’s buffer to buffer pool. So,
> >> current
> >>>>>> files(depend on buffer pool size) read message in buffer, previous
> >> files
> >>>>>> read message in channel.
> >>>>>> This design could save direct memory for one physical machine
> running
> >>>> many
> >>>>>> application instances.
> >>>>>>
> >>>>>> Second, when and how to activate this feature:
> >>>>>> This feature I think it’s very suitable for tracing data provided
> fast
> >>>> but
> >>>>>> OAP server or STORAGE consumes slowly, so file storage should be
> very
> >>>>>> important, because we don’t need to worry about data loss.
> >>>>>> I want to add a config key in agent profile, if the config value
> >>>>>> configured as FILE_CACHE or default as FILE_CACHE, the feature can
> be
> >>>>>> activated.
> >>>>>>
> >>>>>
> >>>>> This looks good for me, and this should be OFF in default, as today,
> in
> >>>>> many k8s deployments, there is very limited perf of local disk.
> >>>>>
> >>>>>
> >>>>>>
> >>>>>> Third, what is performance:
> >>>>>> I tested it on my PC(Macbook pro 2016, 2 core 8g RAM, -Xms1g
> -Xmx1g)
> >>>> with
> >>>>>> only one thread, put 1000_000 messages(2000 bytes per message) to
> file
> >>>>>> costs about 20 seconds(generate random string and save to disk total
> >>>> cost
> >>>>>> 20 seconds), 50_000 message per second.
> >>>>>>
> >>>>>
> >>>>> 50k/s seems fine, but do you read the data from the DataCarrier, then
> >>>> write
> >>>>> to the file? Or the TracingContext access the file buffer directly?
> >> Those
> >>>>> are different scenarios and have different performance requirements.
> >>>>>
> >>>>>
> >>>>>>
> >>>>>> Any questions, reply mail for detail.
> >>>>>> Thanks.
> >>>>>>
> >>>>>> Dao Jun  道君
> >>>>>> Alibaba-inc, tjm
> >>>>>>
> >>>>>>> 在 2020年7月14日,上午10:34,Sheng Wu <[email protected]> 写道:
> >>>>>>>
> >>>>>>> Hi
> >>>>>>>
> >>>>>>>> I have noticed that skywalking use heap buffer to cache tracing
> >> data.
> >>>>>>>
> >>>>>>> It could cause data loss, but that is intentional. Because we need
> to
> >>>>>> keep
> >>>>>>> memory safe.
> >>>>>>>
> >>>>>>> Back to what your asking, if you want to build a local file system
> >>>> based
> >>>>>>> cache, I think you should submit a design, including
> >>>>>>> 1. What is the file write/read model
> >>>>>>> 2. When should activate this feature, and how
> >>>>>>> 3. What is performance? And do you have available benchmark result
> >>>>>> between
> >>>>>>> memory write and file write in high concurrency situation.
> >>>>>>> more if you thing need to say.
> >>>>>>>
> >>>>>>> You could use this[1] as design doc template. Look forward to your
> >>>>>> detail.
> >>>>>>>
> >>>>>>> [1]
> >>>>>>>
> >>>>>>
> >>>>
> >>
> https://docs.google.com/document/d/1biRE3Bc0cTbs7qnBozUuAxCmeP5n8y0JKJAyzqitLnM/edit
> >>>>>>>
> >>>>>>> Sheng Wu 吴晟
> >>>>>>> Twitter, wusheng1108
> >>>>>>>
> >>>>>>>
> >>>>>>> Aries <[email protected]> 于2020年7月14日周二 上午10:13写道:
> >>>>>>>
> >>>>>>>> Hi all:     I have noticed that skywalking use heap buffer to
> cache
> >>>>>>>> tracing data. It usually cause data loss. Because of this
> problem, I
> >>>>>> want
> >>>>>>>> to add a high-performance  file storage to skywalking,so that
> >> tracing
> >>>>>> data
> >>>>>>>> can be saved to disk.      If tracing data saved to
> file,skywalking
> >>>> will
> >>>>>>>> have strong ability to accumulate data and we do not have to care
> >>>> about
> >>>>>> how
> >>>>>>>> many tracing data provided or whether  OAP server working, data
> had
> >>>>>> saved.
> >>>>>>>> Do we need this feature? Any suggestions?            Thanks
> >>>>>>
> >>>>>>
> >>>>
> >>>>
> >>
> >>
> >
>
>

Reply via email to